Stored procedures 实体框架4.1-创建主键值
快速信息:Stored procedures 实体框架4.1-创建主键值,stored-procedures,primary-key,entity-framework-4.1,identity,Stored Procedures,Primary Key,Entity Framework 4.1,Identity,快速信息: 首先使用EF4.1代码 使用没有属性装饰的POCO类 在EntityTypeConfiguration类中使用fluent配置将POCO映射到数据库 遵循DDD模式,使用通用存储库、聚合根、规范等 问题: 对于主键设置为identity的实体,DatabaseGenerateOption.identity应该可以正常工作 然而,在我们当前的模式中,有一种“有趣的”方法来创建主键。调用一个存储过程,创建要使用的“下一个”唯一键(对多个不同的表调用相同的存储过程,以确保所有表都具有唯
- 首先使用EF4.1代码
- 使用没有属性装饰的POCO类
- 在EntityTypeConfiguration类中使用fluent配置将POCO映射到数据库
- 遵循DDD模式,使用通用存储库、聚合根、规范等
谢谢 DatabaseGeneratedOption的值设置EF如何处理属性:
-标准属性。EF将在选择期间加载其值,允许应用程序修改该值并保留该值无
-EF希望在插入记录时数据库会设置此属性。插入记录时,EF将自动将该值加载回实体。它不必是数据库中的标识列,也可以是触发器生成的值。应用程序无法为标记为标识的属性设置值Identity
-EF希望每次修改后数据库中的此属性都会更改。它在每次插入或更新后重新加载值。应用程序无法为标记为标识的属性设置值Computed
None
。例如,如果您决定使用before insert触发器来执行该过程,则必须使用Identity
DatabaseGeneratedOption.Identity
表示插入记录时将在数据库中设置该值DatabaseGeneratedOption.Computed
表示每次更新记录时都会在数据库中设置该值 对不起,我应该把我文章的结尾写得更清楚一点。澄清:在实际插入之前设置ID(触发器对我们不起作用)的最佳方法是什么?在您的上下文中覆盖SaveChanges
。在ChangeTracker
中,找到处于Added
状态的所有实体,并为每个实体调用该SP以设置其ID。再次感谢您的帮助:)