数据层与实体框架和类产品的连接错误

问题描述

| 目标: 在WPF应用程序中将实体框架与N层一起使用。 问题: 我无法将产品类从地图ProductRepository映射到实体框架,该实体框架也有一个名为Product的类。 当我尝试解决问题时,我总是会检索以下错误消息:   错误1无法隐式转换类型   \'System.Collections.Generic.List \'   至   \'System.Collections.Generic.List \'D:\\ Arbete \\ kurser \\ C#.NET \\ Labbar \\ Lab3 \\ ny \\ MediaStore \\ DataAccessLibrary \\ ProductRepository \\ ProductRepository.cs 45 20 DataAccessLibrary 只是一点提醒: 我希望Product类具有灵活性,也可以在业务和表示层中使用。
namespace DataAccessLibrary.ProductRepository
{

    public partial class Product
    {
        public Int32 ArticleNumber_id { get; set; }
        public string Name { get; set; }
        public decimal SalePrice { get; set; }
        public decimal PurchasePrice { get; set; }
        //public string Book_url { get; set; }
        public Int32 ProductCategory_id { get; set; }
        public Int32 supplier_id { get; set; }
        public Int32 Role_id { get; set; }

    }
}
namespace DataAccessLibrary.ProductRepository
{

    /// <summary>
    /// Responsible for uppdating,adding,deleting,retrieving data from product list.
    /// </summary>
    public class Productrepository : IProductrepository
    {

        private List<Product> myProductList;

        private MediaStoreEntities _myMediaStoreEntities = new MediaStoreEntities();

        public Productrepository()
        {
            myProductList = new List<Product>();
        }

        /// <summary>
        /// Retrieve all data from the product list
        /// </summary>
        /// <returns>A list with full of product data.</returns> 
        public List<Product> GetAllProductList()
        {
            var productListt = (from a in _myMediaStoreEntities.Products
                                          select a).ToList();

            return productListt;
            //return productList;   
        }
    }
}
类:ProductRepository 命名空间:DataAccessLibrary.ProductRepository
/// <summary>
/// Retrieve all data from the product list
/// </summary>
/// <returns>A list with full of product data.</returns> 
public List<Product> GetAllProductList()
{
    var productListt = (from a in _myMediaStoreEntities.Products
                                  select a).ToList();

    return productListt;
    //return productList;   
}
    

解决方法

        这是因为您有两个
Product
类。在“ 4”名称空间中一个,在“ 5”名称空间中第二个。两个部分都必须在同一名称空间中才能形成单个类。 如果您尝试使用自定义POCO类(仅EFv4),则必须通过删除设计器中的自定义工具来关闭自动代码生成功能(之所以没有这样做,是因为EDMX下仍存在.Designer.cs文件)。然后,您必须创建派生自ѭ6derived的自定义上下文类,该类将公开
ObjectSet<DataAccessLibrary.ProductRepository.Product>
    ,        您有两个类,一个是Product.cs,一个类是在EDMX的文件后面代码中。两者都位于不同的命名空间下。 对您而言,ProductRepository.Product类和EDMXNamespace.Product可能看起来相同,但是对于编译器,这两个类是不同的,
List<ProductRepository.Product> != List<EDMXNamespace.Product>
因为您拥有所有相同的字段,所以根本不需要在ProductRepository中完全创建Product.cs类,即使您想创建单独的类,也应该使用某种构造函数来复制所有字段。