在Entity Framework中使用通用模型?

时间:2015-07-01 12:14:15

标签: c# entity-framework generics ef-code-first entity-framework-6

这是我数据库的一部分:

public abstract class LmData
{
    public int Id { get; set; }

    public LmDataType Type { get; set; }
}

[Table("ListLmDatas")]
public class ListLmData<T> : LmData where T : LmData
{
    public virtual List<T> Value { get; set; }
    public ListLmData()
    {
        Type = LmDataType.List;
    }
}

如您所见,我正在尝试在我的数据库中使用通用模型(继承自LmData)。 我添加了这个并更新了数据库(EF似乎没有抱怨)。

另一个模型引用了泛型模型(ListLmData),如下所示引用(简化):

public class WpSite
{
    public virtual ListLmData<StringLmData> Urls { get; set; }
}

但是运行以下代码:

WpSite wp = new WpSite();
wp.Urls = new ListLmData<StringLmData>();
wp.Urls.Add(new StringLmData());
context.WpSites.Add(wp);
context.SaveChanges();

导致添加WpSite,但.Urls属性为NULL。

此外,在检查我的数据库时,我发现似乎没有名为“ ListLmDatas ”的表格,这进一步让我感到困惑。

Entity Framework 6.1.1中是否不支持通用模型?

另一方面,是的,我没有显示“StringLmData”的模型定义,因为就我所见,它与问题无关。

1 个答案:

答案 0 :(得分:0)

继承有效,泛型没有。