[英]EF Core - how to clear object's id and its navigation properties
假設我有一個對象,並且想清除其ID和所有導航屬性。 有可能通過分離嗎? 如果是這樣,那么我該如何在EF核心中執行此操作?
class Car
{
int Id {get;set;}
int CarTypeId {get;set;}
[ForeignKey(nameof(CarTypeId))]
CarType CarType{get;set;}
...
}
我最近做了這樣的事情。 普通的DbContext沒有分離的方法,因此我添加了一個。
public void Detach<T>(T entity)
where T : class
{
Entry( entity ).State = EntityState.Detached;
}
接下來,我制作了一種分離和重置實體的方法。 我是專門為一個實體制作的,但是概念是這樣的。
public void DetachAndResetKeys(Car entity)
{
// Load references if needed
// Detach
_dbContext.Detach( entity );
// Reset Key. 0 equals not set for int key
entity.Id = 0;
entity.CarType = null;
}
更新:重置分離鍵。 如果密鑰可以是不同的類型,則也需要處理。 這里只有int
public void Detach<T>(T entity)
where T : class
{
Entry( entity ).State = EntityState.Detached;
foreach(var prop in Entry( entity ).Properties) {
if (prop.Metadata.IsKey()) {
prop.CurrentValue = 0;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.