2017-06-18 4 views
0

edmxファイルでStoreGeneratedPatternを「なし」に更新する必要があります。Name属性に「コード」値が含まれているような、いくつかのクライタラに基づいて、プロパティノードをプログラム的に更新する必要があります。xpathはedmxファイルを読み込みますEntityTypes

<?xml version="1.0" encoding="utf-8"?> 
<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx"> 
    <!-- EF Runtime content --> 
    <edmx:Runtime> 
    <!-- SSDL content --> 
    <edmx:StorageModels> 
    <Schema Namespace="Model.Store" Provider="System.Data.CData.DynamicsCRM" ProviderManifestToken="DynamicsCRM" Alias="Self" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl"> 
     <EntityType Name="Account"> 
      <Key> 
      <PropertyRef Name="Id" /> 
      </Key> 
      <Property Name="Id" Type="varchar" StoreGeneratedPattern="Identity" Nullable="false" /> 
      <Property Name="AccountCategoryCode" Type="varchar" StoreGeneratedPattern="Computed" /> 
      <Property Name="AccountClassificationCode" Type="varchar" StoreGeneratedPattern="Computed" /> 
      <Property Name="AccountNumber" Type="varchar" /> 

答えて

0

それが働いているのXML LINQ

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     const string FILENAME = @"c:\temp\test.xml"; 
     static void Main(string[] args) 
     { 
      XDocument doc = XDocument.Load(FILENAME); 

      XElement root = doc.Root; 


      XElement entityType = root.Descendants().Where(x => x.Name.LocalName == "EntityType").FirstOrDefault(); 
      XNamespace ns = entityType.GetDefaultNamespace(); 
      XElement toChange = entityType.Elements(ns + "Property").Where(x => ((string)x.Attribute("Name")).Contains("Code")).FirstOrDefault(); 
      toChange.SetAttributeValue("StoreGeneratedPattern", "None"); 
     } 
    } 
} 
+0

をお試しください!ありがとう – Ashish

関連する問題