如何解决数据层与实体框架和类产品的连接错误
| 目标: 在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类,即使您想创建单独的类,也应该使用某种构造函数来复制所有字段。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。