为什么Table属性(用于将POCO类映射到正确的数据库名称/模式)在EntityFramework.dll中?是否有充分的理由?
这难道不会阻止你创建一个只包含实体而没有特定数据访问技术依赖的域项目吗?例如,如果我使用此属性,我不认为这些类可以移植到Silverlight。
这是一个疏忽,还是我遗漏了什么?
我知道我可以使用流畅API来规避这个问题,但是这个属性似乎更适合此目的。
为什么Table属性(用于将POCO类映射到正确的数据库名称/模式)在EntityFramework.dll中?是否有充分的理由?
这难道不会阻止你创建一个只包含实体而没有特定数据访问技术依赖的域项目吗?例如,如果我使用此属性,我不认为这些类可以移植到Silverlight。
这是一个疏忽,还是我遗漏了什么?
我知道我可以使用流畅API来规避这个问题,但是这个属性似乎更适合此目的。
System.ComponentModel.DataAnnotations
,如果EF 4.1是.NET Framework的一部分,则可能已添加到System.ComponentModel.DataAnnotations.dll
程序集中。但是,由于EF 4.1是独立于Framework更新发布的,因此他们无法触及框架核心程序集。因此,它现在位于EntityFramework.dll中,但仍位于System.ComponentModel.DataAnnotations
命名空间中,因此与Entity Framework有所独立。也许它将在下一个.NET Framework版本中移动到System.ComponentModel.DataAnnotations.dll
中。DbContext
等),我不认为这是对Entity Framework的依赖。这确实会对Silverlight造成问题。
对于那些遇到困难的人,目前必须使用流畅的API来进行映射。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<BankAccount>().ToTable("BankAccounts");
modelBuilder.Entity<CreditCard>().ToTable("CreditCards");
}
HTH.