Linq SQL устанавливает значения свойств для выбранной сущности - PullRequest
0 голосов
/ 05 июля 2018

Я использую Code First Entity Framework и хочу установить значения свойств выбранного объекта в Linq. Проблема в том, что я не хочу создавать новый объект сущности, устанавливая каждое свойство вручную.

Я получил этот Linq:

var query = from myEntity in entities.MY_ENTITIES
            join joinEntity in entities.JOIN_ENTITIES on myEntity.JOIN_ID equals joinEntity.ID
            select new MY_ENTITY
            {
                ID = myEntity.Id,
                // all other myEntity properties that I want to avoid setting manually
                NotMappedProperty = joinEntity
            };

Но вместо создания нового MY_ENTITY объекта я просто хочу установить NotMappedProperty myEntity в пределах выбора.
Также я не могу отобразить две таблицы, потому что мое объединение более сложное и не может быть отображено.

Есть идеи о том, как уменьшить код вместо написания каждого свойства, установленного вручную? Это может действительно взорваться, если вы получили сущность со многими свойствами.


Решением было бы создание обертывающего объекта, но это кажется неправильным:

public class MY_ENTITY_EXTENDED
{
    public MY_ENTITY MyEntity { get; set; }

    public JOIN_ENTITY JoinEntity { get; set; }
}

И в Linq выберите:

// ...
select new MY_ENTITY_EXTENDED
{
    MyEntity = myEntity,
    JoinEntity = joinEntity
}

Ответы [ 2 ]

0 голосов
/ 10 июля 2018

Daniel, что-то вроде этого должно работать, когда объединенная сущность заполняется после возврата исходного набора сущностей:

var list = new List<MY_ENTITY> ();

var query = from myEntity in entities.MY_ENTITIES 
            select new MY_ENTITY
            {
                ID = myEntity.Id,
                // all other myEntity properties that I want to avoid setting manually
                NotMappedProperty = null,  //    --> we will set this later
                joinEntityIdToJoinTo = joinEntity.ID
            };;

var joinedObjectsQuery = from myEntity in entities.JOIN_ENTITIES;

foreach (var entity in query) 
{
    list.Add( new MY_ENTITY {
        ID = entity.ID,
        NotMappedProperty = joinedObjectsQuery.Single(x=>xID == entity.joinEntityIdToJoinTo)
    })
}
0 голосов
/ 05 июля 2018

Использование частичных классов позволит вам расширить класс MY_ENTITY.

* 1003 Е.Г. *

public partial class MY_ENTITY
{
   // db entity properties
}

public partial class MY_ENTITY
{
    public JOIN_ENTITY JoinEntity { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...