一個關于EntityFramework和SQLite的問題。
當我使用SQL Server作業時,我想對一個表進行查詢,我可以很容易地訪問所需的表(例如 "資訊"),就像這樣:
當我使用SQL Server作業時,我想對一個表進行查詢,我可以很容易地訪問所需的表(例如 "資訊")。
_databaseDBContext.Messages.where(m => m.id == id)。
但是在SQLite上,我不能通過簡單的輸入名字來訪問這個表,而是要使用Set<>()方法,比如:
_SqliteDBContext.Set<Message>().where(m => m.id == id)。
這讓我想到,如果我有兩個表,會發生什么情況?
DbSet<Message> Messages { get; set; }
DbSet<Message> OtheTypes { get; set; }
我怎樣做才能正確地指示對方呢?
謝謝!uj5u.com熱心網友回復:
函式.Set<T>()有一個多載方法,它接受一個表名;.Set<Message>(string name)。所以你可以用它來區分這兩個表。
下面是使用 uj5u.com熱心網友回復: EF Core只支持在模型中為每個物體型別設定一個映射。也就是說,并不支持同一型別的兩個實體最終被存盤在不同的表或不同的列中的情況。
但是你可以做一個簡單的技巧: 然后在背景關系中
標籤:Where?
Where子句示例:var messages = _SqliteDBContext. Set<Message>("Messages").Where(x => x.id == 2)
var messages = _SqliteDBContext.Set<Message>("OtheTypes").Where(x => x.id == 2) 。
C#查詢語言和兩個資料庫表的例子:var query = from message in _SqliteDBContext. Set<Message>("Messages"/span>)
join otherType in _SqliteDBContext. Set<Message>("OtheTypes") on messages.id equals otherType.id
select new { message, otherType};
public class Messagetwo : Message
{
}
DbSet<Message> Messages { get; set; }
DbSet<Messagetwo> OtheTypes { get; set; }
