Объединение логики отработки отказа в нескольких столбцах в одно свойство в Entity Framework 4.1 - PullRequest
1 голос
/ 07 июля 2011

Я работаю над устаревшей корпоративной базой данных, которая использует несколько столбцов для получения номера детали. SQL, который мы в настоящее время используем, проверяет номер детали, а если номер детали равен нулю, то проверяет дочерний номер детали, что будет лучшим способом объединения этой логики в одно свойство модели ef (например, Product.PartNumber)

Я бы хотел, чтобы это было невидимым, насколько это возможно, чтобы только PartNumber был виден снаружи API данных

Ответы [ 2 ]

0 голосов
/ 08 июля 2011

теоретически не мог бы ты сделать что-то подобное

public class Part
{ 
    public string PartNumber
    {
        get
        {
            return this.PartId ?? this.ChildPartId;
        }  
    }

    internal string PartId { get; set; }
    internal string ChildPartId { get; set; }
}



public class PartsContext : DbContext
{ 
    public DbSet<Part> Parts { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Part>().Ignore(e => e.PartNumber);   
        base.OnModelCreating(modelBuilder);
    }
}

или это все еще считается плохим

0 голосов
/ 07 июля 2011

Если вы используете подход, основанный на коде, единственный способ - это проецировать в пользовательском запросе linq-to-entity:

var products = context.Products
                      .Select(p => new SomeNonMappedType
                           {
                               Id = p.Id,
                               // All other fields
                               PartNumber = p.PartNumber ?? p.Child.PartNumber // I hope this will work
                           });

Если вы используете EDMX, вы можете использовать DefiningQuery или QueryView, но вся ваша новая сущность будет доступна только для чтения. Подробнее о них в другой ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...