为什么我的Entity Framework模型中没有Type类型的属性?

时间:2016-08-06 13:43:57

标签: c# entity-framework ef-code-first poco ef-fluent-api

我正在为项目设置模型,除了下面的更改外,一切都按预期工作。我认为将类型指定为Type而不是将其描述为string,这样做很整洁。

namespace DataBase.Entities
{
  public class Lock
  {
    public Guid Id { get; set; }
    public DateTime? Occasion { get; set; }
    public int Counter { get; set; }
    public Type Entity { get; set; }
    //public string Entity { get; set; }
  }
}
猜猜是什么! EF不喜欢它。我在添加显式迁移时遇到的错误如下,我不明白为什么。

  

System.ArgumentNullException:值不能为空。
  参数名称:entitySet

大多数goolearching导致people发现POCO类有一些他们忘记的继承。 Someone建议强制重新启用迁移。我在模型中根本没有任何继承,并且强制迁移只给出了重新创建的配置文件。

1 个答案:

答案 0 :(得分:4)

我总是存储程序集限定的类型名称而不是类型本身。

Type实例它不仅仅是一个名称,而是在运行时可能很有趣的许多元数据,但存储是没有意义的(即序列化)类型实例原样

当您设置整个Type属性获取Type.AssemblyQualifiedName属性值:

instance.Type = typeof(X).AssemblyQualifiedName;

应该使用整个类型的代码可以调用Type.GetType(lock.Type)再次构建Type实例。