[英]Entity Framework 7 Create in-memory implementation of DbSet
對不起,我是實體框架的新手..
我想創建一個 TestDbSet,它在 EF 7 中提供 DbSet 的內存實現。
public class TestDbSet<TEntity> : DbSet<TEntity>, IQueryable, IEnumerable<TEntity>, IDbAsyncEnumerable<TEntity>
where TEntity : class
{
ObservableCollection<TEntity> _data;
IQueryable _query;
public TestDbSet()
{
_data = new ObservableCollection<TEntity>();
_query = _data.AsQueryable();
}
public override TEntity Add(TEntity item)
{
_data.Add(item);
return item;
}
public override TEntity Remove(TEntity item)
{
_data.Remove(item);
return item;
}
}
我在 Add 方法中遇到錯誤,返回類型必須是EntityEntry<T>
以匹配 Overriden Dbset 成員。
我試圖更改方法簽名,但我不確定如何將項目作為 EntityEntry 返回
public override EntityEntry<T> Add(T item)
{
_data.Add(item);
return item;
}
我找不到類似的問題。 你能指導我如何在 EF 7 中實現.. 我知道它會在 EF 6 中工作..
對於沒有真實數據庫的測試,您可以使用 Microsoft.EntityFrameworkCore.InMemory包
抱歉,我知道這是非常老的線程。 但想如果這有幫助。 我設法通過返回 null 來覆蓋 EF Core 的 Add 方法。 由於我們只是列表中的數據項,因此除非您需要 ChangeTracking Object,否則我們是否返回 null 並不重要。
public override EntityEntry<T> Add(T item)
{
_data.Add(item);
return null;
}
我通過以下代碼解決了它
public override EntityEntry<T> Add(T item)
{
_data.Add(item);
return item as EntityEntry<T>;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.