使用Entity Framework 6,我想知道是否需要Mapping文件。我的模型定义如下:
[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的需求,这是正确的吗?
答案 0 :(得分:0)
EF Fluent Api优于数据注释,因为它允许域模型层隔离并且更灵活(例如,IsRowVersion可能仅在流畅的Api中添加)。 关键属性是多余的。
答案 1 :(得分:0)
您可以使用基于属性的映射。在您的情况下不需要映射文件。但我建议学习Fluent Api并使用它。
通常,您有多种选择:
不要使用任何显式映射 - 只需依赖约定(内置或自定义)。它可以在简单的情况下使用。为此,您的DbContext应通过DbSet或已知类型的引用了解您的实体。
使用数据注释。基于属性的映射非常简单直接。
使用Fluent Api(具有映射文件)。它是最先进的场景,具有更多可能性(请查看here以获取更详细的参考信息)。
此外,您还可以结合前3种方法。您可以一起使用所有这些解决方案。 例如:
您可以使用Fluent Api定义Data Annotation部件不支持。