DDi*_*ita 2 entity-framework-4.1
目前,我已经创建了一个基本实体类型,我的所有实体都将从中派生出来.
public abstract class BaseEntity
{
/// <summary>
/// Key Field for all entities
/// </summary>
///
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
/// <summary>
/// Date entity was created
/// </summary>
public DateTime DateCreated { get; set; }
/// <summary>
/// Last date Modified
/// </summary>
public DateTime DateModified { get; set; }
/// <summary>
/// keep track of Row Version used for concurrency
/// </summary>
[Timestamp]
public Byte[] RowVersion { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
我正在考虑将我的模型与实体框架分离,因此它不依赖于它.我想有另一个项目用于我的EF实现.所以,我想在该项目中包含将构成模型中关系的映射.
由于我的BaseEntity类是一个抽象类,因此保持我的[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]和[TimeStamp]属性的最佳方式是什么,以便它将使用流畅的API和单独的映射应用于我的所有派生实体文件?我不认为我可以设置建模器来添加BaseEntity映射,因为它是一个抽象类.我应该创建一个具有所有基本功能的接口并重复所有实体的映射吗?
我正在使用EntityTypeConfiguration类并为我的所有实体创建单独的映射类.
你可以使用基类:
public abstract class BaseEntity
{
public Guid Id { get; set; }
public DateTime DateCreated { get; set; }
public DateTime DateModified { get; set; }
public Byte[] RowVersion { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,这取决于您是否要映射继承.我想你不想这样定义你的配置,如:
public class BaseEntityConfiguration<TEntity> : EntityTypeConfiguration<TEntity>
where TEntity : BaseEntity
{
public BaseEntityConfiguration()
{
HasKey(e => e.Id);
// This is not very good - check http://stackoverflow.com/questions/6098972/guid-comb-strategy-in-ef4-1-codefirst/6100606#6100606
Property(e => e.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Property(e => RowVersion).IsRowVersion();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,从BaseEntity派生的每个实体派生其配置BaseEntityConfiguration,
| 归档时间: |
|
| 查看次数: |
3020 次 |
| 最近记录: |