2

我对使用 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与上下文无关,只是它继承自实体类之一。

有人可以帮我理解这里发生了什么吗?

4

0 回答 0