具有通用类型和EF的POCO

时间:2014-06-02 18:58:02

标签: entity-framework generics types poco

是否可以使用具有泛型类型的POCO并映射到实体框架代码优先?我问的原因是我在context.Products.Add(product)上得到以下错误; CreateNewProduct()方法的行 -

未映射类型'CodeFirstNewDBConsole.Product`1 [CodeFirstNewDBConsole.ProductDetail]'。使用Ignore方法或NotMappedAttribute数据批注检查未明确排除类型。验证类型是否已定义为类,不是原始类型还是通用类型,并且不从EntityObject继承。

POCO

public class Product<T>
{
    public int Id { get; set; }
    public string ProductName { get; set; }
    public T ProductDetails { get; set; }
}

ProductContext

public class ProductContext : DbContext
{
    public DbSet<Product<ProductDetail>> Products { get; set; }
}

产品插页

private static void CreateNewProduct()
    {
        var productDetail = new ProductDetail { ProductDetailName = "Test Product Detail" };

        var product = new Product<ProductDetail>
        {
            ProductName = "Test Product",
            ProductDetails = productDetail
        };

        using (var context = new ProductContext())
        {
            context.Products.Add(product);
            context.SaveChanges();
        }
    }

1 个答案:

答案 0 :(得分:0)

实体框架不支持通用类。从错误消息中可以清楚地看出: “...验证类型是否已定义为类,不是原始类型还是泛型,并且不从EntityObject继承。”