我是一個新的實體框架(我使用6.0,但如果我需要我可以更新),我正在尋找一種方法來綁定實體linq查詢。例如,我有:實體框架映射實體linq查詢
public class User
{
public string Name {get;set;}
public WorkPlace Place {get;set;}
public bool IsAlive{get;set;}
}
public class WorkPlace
{
public string Name {get;set;}
public bool IsActive {get;set;}
public Collection<User> Users;
}
他們都被映射到數據庫中的表和我有OnModelCreating
:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().ToTable(tableName: "users");
modelBuilder.Entity<WorkPlace>().ToTable(tableName: "workplaces");
}
但我需要使用另一個對象(導航和延遲加載):
public class CustomUser
{
public string Name {get;set;}
public CustomWorkPlace Place {get;set;}
}
public class CustomWorkPlace
{
public string Name {get;set;}
public Collection<CustomUser> Users;
}
someBuilder.Entity<CustomUser>().ToLinq(cntx => cntx.Set<User>().Where(user => user.IsAlive)).MapProperties();
// the way of mapping properties is not important
someBuilder.Entity<CustomWorkPlace>().ToLinq(cntx => cntx.Set<WorkPlace>().Where(place => plase.IsActive)).MapProperties()
的,這個最有趣的事情是要通過導航,當我得到一個用戶的公司,我不能讓一個公司,不活躍,與同爲一個COM公司 - 我不能得到任何CustomUser
這是映射到不活的用戶。
非常感謝
什麼問題? – Kinetic
如何通過實體框架或nuget擴展來實現此邏輯(從上下文獲取我的自定義對象)。 – VVildVVolf
只需使用你的普通實體加載數據並從那裏創建自定義的數據,不是嗎? – Kinetic