![](/img/trans.png)
[英]Modify object without affecting base database table in Entity Framework?
[英]Entity Framework : Update affecting Object
我遇到了EF Update方法的問題。
我有一個包含mutliple信息和其他復雜對象的對象例如,當我調試我的object.otherObject包含數據時。
然后我用以下行更新它:
_dbContext.Update(object);
問題是在更新調用之后,我的object.otherObject失去了它的值並變為null。
當嘗試使用不同的操作(用戶界面操作)和相同的對象(不同的值)時,我不會遇到該問題。
根據我對EF更新的理解,它應該將對象標記為已修改但保持完整。
編輯:
我的映射文件是:
internal class ObjectConfiguration: EntityTypeConfiguration<Object>
{
public ObjectConfiguration()
{
ToTable("TABLE_NAME", Properties.Settings.Default.DBSchema);
HasKey(s => s.Id);
Property(s => s.Id).HasColumnName("COLUMNNAME");
}
}
編輯2:
_dbContext是根據EF 5存儲庫和工作單元格構建的自定義對象:
像這樣:
public class UserManager : IDisposable
{
private readonly IRepository _dbContext;
}
public interface IRepository
{
TEntity Update<TEntity>(TEntity entity) where TEntity : class;
}
編輯3:
通過Attach函數時,對象實際上會清空其值:
public TEntity Update<TEntity>(TEntity entity) where TEntity : class
{
try
{
TEntity attachedEntity = Set<TEntity>().Attach(entity);
var entry = Entry(entity);
entry.State = System.Data.EntityState.Modified;
}
catch(Exception e)
{
}
return entity;
}
我不知道你的映射是怎樣的,但你可以使用這樣的東西
public class Example
{
//ohter properties
[Column("id_reference")
public int IdReference { get; set; }
[ForeignKey("IdReference ")]
public virtual Reference ReferenceObj { get; set; }
}
在此示例中,僅映射IdReference屬性並將ReferenceObj屬性設置為IdReference,使用您必須在加載此屬性時指定的虛擬修飾符,為此執行此操作,在查詢中使用.Include(“ReferenceObj”)(示例dbContext .Examples.Where(x => x.Id> 0).Include(“ReferenceObj”)。這可以適用於您的情況,因為只映射了IdReference屬性
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.