Ошибка соединения с платформой Entity и продуктом класса из уровня данных - PullRequest
0 голосов
/ 29 мая 2011

Цель:
Использовать структуру сущностей с N-уровнем в моем приложении WPF.

Проблема:
Я не могу объединить класс Product из карты 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;   
}

aaa bbb ccc

Ответы [ 2 ]

0 голосов
/ 29 мая 2011

Это потому, что у вас есть два Product класса.Один в ProductRepository пространстве имен и второй в Database пространстве имен.Обе части должны быть в одном и том же пространстве имен, чтобы сформировать один класс.

Если вы пытаетесь использовать пользовательский класс POCO (только EFv4), вы должны отключить автоматическую генерацию кода (вы этого не сделали, потому что у вас все еще естьФайл .Designer.cs под вашим EDMX), удалив пользовательский инструмент в конструкторе.Затем вы должны создать собственный класс контекста, производный от ObjectContext, который будет выставлять ObjectSet<DataAccessLibrary.ProductRepository.Product>

0 голосов
/ 29 мая 2011

У вас есть два класса, один Product.cs и один класс находятся внутри кода вашего файла EDMX.И оба находятся в разных пространствах имен.

Для вас класс ProductRepository.Product и EDMXNamespace.Product могут выглядеть одинаково, но для компилятора оба класса различны,

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

Нет необходимостичтобы вообще создать класс Product.cs в вашем ProductRepository, поскольку у вас есть все те же поля, даже если вы хотите создать отдельный класс, вы должны использовать какой-то конструктор для копирования всех полей.

...