0

我嘗試編寫一種通用庫來添加方法。 一切正常補充,但我有一個與外國KEY.But不工作,因爲外鍵 如果有外鍵(EF-4),如何使用通用存儲庫添加新值?

alt text

public class DomainRepository<TModel> : IDomainRepository<TModel> where TModel : class 
{ 
    private ObjectContext _context; 
    private IObjectSet&#60;TModel&#62; _objectSet; 

    public DomainRepository(ObjectContext context) 
    { 
     _context = context; 
     _objectSet = _context.CreateObjectSet&#60;TModel&#62;(); 
    } 

    // do something... 
    public TModel Add<TModel>(TModel entity) where TModel : IEntityWithKey 
    { 
     EntityKey key = _context.CreateEntityKey(entity.GetType().Name, entity);   
     _context.AddObject(key.EntitySetName, entity); 
     _context.SaveChanges(); 
     return entity; 
    } 
    // do something... 
} 

調用庫的兩個表相關的表:

// insert-update-delete 
public partial class AddtoTables 
{ 
    public table3 Add(int TaskId, int RefAircraftsId) 
    { 
     using (DomainRepository<table3> repTask = new DomainRepository<table3>(new TaskEntities())) 
     { 
      return repTask.Add&#60;table3&#62;(new table3() { TaskId = TaskId, TaskRefAircraftsID = RefAircraftsId }); 
     } 
    } 
} 

如果此表包含外鍵關係,如何添加新值?

alt text

+0

如果對象已經存在,您正在進行隱式更新。不要這樣做,因爲這是一堆蠕蟲。你應該區分插入和更新。 – Steven 2010-12-23 12:31:34

+0

好的,我會更新我的代碼。但是在這個錯誤中不會發生錯誤SAVECHANGES()。 – Penguen 2010-12-23 12:45:56

回答

1

該死很難確定答案將是有益的,因爲我不認爲我udnerstand你的界面清晰,但爲了增加與外鍵通用repositary對象,你將不得不添加支持添加對象與外鍵。我認爲如果你在簽名的某個地方有類似params ForeignKey[]的東西,你會朝向支持具有外鍵的對象邁進一步。可能建議是毫無價值的,但我得到了一個有價值的建議。

Martin Fowler閱讀企業應用程序體系結構的模式,它將回答您的所有問題 - 在此我確信。

相關問題