我对使用 NuGet 安装到以下控制台应用程序中的 SQL compact 实体框架 4.3.1 有疑问(项目属性 - > 输出类型 = Windows 应用程序,如果您希望复制):
namespace TestEntityFrameworkInheritance
{
class DbExampleRecord
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}
class ExampleModel : DbExampleRecord
{
public TimeSpan NotInDb { get; set; }
}
class DataContext : DbContext
{
public DbSet<DbExampleRecord> ExampleRecords { get; set; }
}
static void Main()
{
Database.SetInitializer<DataContext>(
new DropCreateDatabaseIfModelChanges<DataContext>());
using (var db = new DataContext())
{
var dummy = db.ExampleRecords.Add(
new DbExampleRecord{ Name="test record"});
db.SaveChanges();
}
}
}
该方法失败db.ExampleRecords.Add( ...
:
EntityFramework.dll 中出现“System.NotSupportedException”类型的未处理异常
附加信息:没有对应于原始类型“时间”的 EDM 类型“Edm.Time(Nullable=True)”的存储类型
即,EF 试图将时间跨度属性ExampleModel
放入数据库,但ExampleModel
与上下文无关,只是它继承自实体类之一。
有人可以帮我理解这里发生了什么吗?