使用实体框架6,我想知道如果我需要一个映射文件。我有这样定义的模型:我需要映射文件吗?
[Table("UploadedFile")]
public partial class UploadedFile
{
[Key, ForeignKey("Resource"), DatabaseGenerated(DatabaseGeneratedOption.None)]
public System.Guid FileId { get; set; }
public virtual Resource Resource { get; set; }
//...
public System.DateTime Modified { get; set; }
public bool IsActive { get; set; }
public byte[] RecordVersion { get; set; }
public UploadedFile()
{
Resource = new Resource();
}
}
我的映射文件是这样的:
public class UploadedFileMapping : EntityTypeConfiguration<UploadedFile>
{
public UploadedFileMapping()
{
//Primary key
HasKey(t => t.FileId);
//Constraints
Property(t => t.RecordVersion).IsRowVersion();
}
}
我可以只依靠模型中的属性?使用映射文件有什么优点/缺点?
我相信模型中的[Key]
属性否定了HasKey的需要,这是正确的吗?
但是,它更多的是一种痛苦。我不会完全同意域模型隔离......它取决于您在应用程序中使用DTO/ViewModels/Models的方式。此外,您应该只真正从数据库中投射出您真正想要的东西,因此应该永远不会有整个数据库以代码模型化的时间。 (这仅用于创建表和迁移) –