Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数据库第一实体框架6.2中的SaveChanges中删除标识列_C#_Sql Server_Entity Framework 6 - Fatal编程技术网

C# 从数据库第一实体框架6.2中的SaveChanges中删除标识列

C# 从数据库第一实体框架6.2中的SaveChanges中删除标识列,c#,sql-server,entity-framework-6,C#,Sql Server,Entity Framework 6,我有一个SQL Server表Organization,它有一个唯一标识符作为PK。客户要求添加一个身份栏作为“友好id” 现在返回“不支持使用“标识”模式修改列。” 有没有一种方法可以标记标识列,这样database first EF就不会更新它,除非将其更改为会影响许多其他部分的PK?可能有一个属性可以使用。但我不知道。作为一种解决方法,您能否单独设置组织对象属性 Organization=\u db.Organizations.Find(organizationSource.UId); _

我有一个SQL Server表Organization,它有一个唯一标识符作为PK。客户要求添加一个身份栏作为“友好id”

现在返回“不支持使用“标识”模式修改列。”


有没有一种方法可以标记标识列,这样database first EF就不会更新它,除非将其更改为会影响许多其他部分的PK?

可能有一个属性可以使用。但我不知道。作为一种解决方法,您能否单独设置组织对象属性

Organization=\u db.Organizations.Find(organizationSource.UId);
_db.Entry(organization).Property(a=>a.MyProperty1).CurrentValue=organizationSource.MyProperty1;
_db.Entry(organization).Property(a=>a.MyProperty2).CurrentValue=organizationSource.MyProperty2;
//除主键和标识属性外的所有属性的等
_db.SaveChanges();

或者,另一个选项可能是从
organizationSource
类定义中删除您的标识属性(假设您控制了organizationSource类)。

属性是否映射为?EF正在从数据库表生成类。它将StoreGeneratedPattern设置为Identity。然后将set设置为computed。我可以手动设置属性,但我并不期待这样做,因为有许多属性和许多表要求进行此类更改。我想我可以使用AutoMapper将organizationSource映射到一个没有identity属性的新类,但这意味着要维护两个类。@NeilN然后可能使用反射来循环属性,不包括identity属性?尽管如此,使用反射将是最后的手段。或让您的组织继承OrganizationSource类,而您的组织类具有附加的identity属性。更容易维护。。。但还是有两门课。希望有人能找到一种使用属性的方法。可能值得将您的组织类定义添加到您的问题中。
Organization organization = _db.Organizations.Find(organizationSource.UId);
_db.Entry(organization).CurrentValues.SetValues(organizationSource);
_db.SaveChanges();