0

我尝试编写一种通用存储库来添加方法。一切都可以添加,但我有一个与两个具有 FOREIGN KEY 的表相关的表。但由于外键而无法工作

替代文字

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  });
        }
    }
}

如果此表包含外键关系,如何添加新值?

替代文字

4

1 回答 1

1

该死的很难确定答案是否会有所帮助,因为我认为我没有清楚地理解您的界面,但是为了将带有外键的对象添加到通用存储库,您必须添加支持以添加带有外键的对象。我认为,如果您在签名中的某个地方有类似的东西params ForeignKey[],您将朝着使用外键支持对象迈出一步。可能建议毫无价值,但我得到了一个有价值的建议。

阅读 Martin Fowler 的企业应用程序架构模式,它会回答你所有的问题——我敢肯定。

于 2010-12-23T12:54:39.763 回答