Linq SQL 为所选实体设置 属性 值
Linq SQL set property values to selected entity
我正在使用 Code First Entity Framework 并希望在 Linq 中设置 属性 实体的 select 值。问题是我不想通过手动设置每个 属性 来创建新的实体对象。
我得到了这个 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
对象,而是想在 select.
中设置 myEntity
的 NotMappedProperty
此外,我无法映射这两个表,因为我的连接更复杂且无法真正映射。
知道如何减少代码而不是手动编写每个 属性 集吗?如果你有一个有很多属性的实体,这真的会爆炸。
一个解决方案是创建一个包装对象,但这似乎不对:
public class MY_ENTITY_EXTENDED
{
public MY_ENTITY MyEntity { get; set; }
public JOIN_ENTITY JoinEntity { get; set; }
}
并且在 Linq select:
// ...
select new MY_ENTITY_EXTENDED
{
MyEntity = myEntity,
JoinEntity = joinEntity
}
使用部分 classes 将允许您扩展 MY_ENTITY class.
例如
public partial class MY_ENTITY
{
// db entity properties
}
public partial class MY_ENTITY
{
public JOIN_ENTITY JoinEntity { get; set; }
}
丹尼尔,
这样的事情应该有效,在返回原始实体集后填充连接的实体:
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)
})
}
我正在使用 Code First Entity Framework 并希望在 Linq 中设置 属性 实体的 select 值。问题是我不想通过手动设置每个 属性 来创建新的实体对象。
我得到了这个 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
对象,而是想在 select.
中设置 myEntity
的 NotMappedProperty
此外,我无法映射这两个表,因为我的连接更复杂且无法真正映射。
知道如何减少代码而不是手动编写每个 属性 集吗?如果你有一个有很多属性的实体,这真的会爆炸。
一个解决方案是创建一个包装对象,但这似乎不对:
public class MY_ENTITY_EXTENDED
{
public MY_ENTITY MyEntity { get; set; }
public JOIN_ENTITY JoinEntity { get; set; }
}
并且在 Linq select:
// ...
select new MY_ENTITY_EXTENDED
{
MyEntity = myEntity,
JoinEntity = joinEntity
}
使用部分 classes 将允许您扩展 MY_ENTITY class.
例如
public partial class MY_ENTITY
{
// db entity properties
}
public partial class MY_ENTITY
{
public JOIN_ENTITY JoinEntity { get; set; }
}
丹尼尔, 这样的事情应该有效,在返回原始实体集后填充连接的实体:
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)
})
}