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

C# 数据层中实体框架和类产品的连接错误,c#,wpf,entity-framework,repository-pattern,n-tier-architecture,C#,Wpf,Entity Framework,Repository Pattern,N Tier Architecture,目标: 在我的WPF应用程序中使用具有N层的实体框架 问题: 我无法将map ProductRepository中的类Product合并到同样具有名为Product的类的实体框架 当我尝试解决问题时,我总是检索此错误消息: 错误1无法隐式转换类型 'System.Collections.Generic.List' 到 'System.Collections.Generic.List'D:\Arbete\kurser\C.NET\Labbar\Lab3\ny\MediaStore\DataAcce

目标: 在我的WPF应用程序中使用具有N层的实体框架

问题: 我无法将map ProductRepository中的类Product合并到同样具有名为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

只是一个小小的提醒: 我希望该类产品是灵活的,也可以用于业务层和表示层

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; }

    }
}
类别: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.cs,一个类位于EDMX的代码隐藏文件中。两者都在不同的名称空间下

对于您来说,ProductRepository.Product类和EDMXNamespace.Product可能看起来相同,但对于编译器来说,这两个类是不同的

List<ProductRepository.Product> != List<EDMXNamespace.Product>

在ProductRepository中根本不需要创建Product.cs类,因为您拥有所有相同的字段,即使您想创建单独的类,也应该使用某种构造函数来复制所有字段。

这是因为您有两个产品类。一个在ProductRepository命名空间中,另一个在数据库命名空间中。两个部分必须位于同一命名空间中才能形成单个类


如果您试图仅使用自定义POCO类EFv4,则必须关闭自动代码生成,因为您的EDMX下仍有.Designer.cs文件,方法是删除设计器中的自定义工具。然后,您必须创建从ObjectContext派生的自定义上下文类,该类将公开ObjectSet

所有项目或库都是在VS2010中创建的,版本为EF 4.0 ProductRepository.cs 59的内容是什么?Product.cs或同一命名类是否存在于不同的命名空间中?请再次查看源代码。我已经更新了回答您问题的页面。谢谢您的帮助。我还有一个问题。根据您在N层的经验。如果在数据层中有一个名为product的常规类。该类还通过在库/项目中添加引用在表示层中使用。主要的问题是:这样做是可以接受的,还是违反了遵循N-tier理念的指导原则?更新有关该类的额外信息谢谢您的帮助。我还有一个问题。根据您在N层的经验。如果在数据层中有一个名为product的常规类。该类还通过在库/项目中添加引用在表示层中使用。主要问题是:这样做是可以接受的,还是违反了遵循N层哲学的指导原则?您是否从表示层引用和使用DataAccessLibrary?如果是,则必须从表示层访问这些数据实体。如果没有这些实体,如何将数据从DataAccessLibrary传输到表示层?您是否会在DataAccessLibrary中再次创建另一个类,将实体映射到这些类并将它们传递到表示层?这对你的应用程序来说是不是太过分了。有时会用到,但我认为你不需要它。若DataAccessLibrary未在表示层中直接使用,则可以提取实体以分离assemebly,并在所有层中使用它。
List<ProductRepository.Product> != List<EDMXNamespace.Product>