2017-10-03 7 views
0

私は分割がデータベースから取得されるので、このコードは、新しいDivisionを追加するために新しいCounterを追加していないことになっているEFは、エンティティ

  DivisionService divService = new DivisionService(); 
      Division div = divService.FindById(10); 
      Counter c = new Counter(div); 

      unitOfWork.CounterRepository.Add(c); 
      unitOfWork.SaveChanges(); 

このコードを持っているが、何が起こるかは、それが追加されますということですが再挿入されますどちらも。どのようなアイデアが問題になるのでしょうか?以下は、EDIT

はここでクラスCounter

public class Counter : BaseCounter 
{ 

    Division division; 

    private Counter() 
    { 

    } 

    public Counter(Division division) 
    { 
     this.division = division; 
    } 

    public Division Division 
    { 
     get 
     { 
      return division; 
     } 
     private set 
     { 
      division = value; 
     } 
    } 

    public override string GetNumber() 
    { 
     return number.ToString(); 
    } 
} 

でもCounterRepositoryCounterServiceラップ

public abstract class BaseCounterRepository<T> where T : BaseCounter 
{ 

    protected MyContext context; 

    public BaseCounterRepository() 
    { 
     this.context = new MyContext(); 
    } 

    public BaseCounterRepository(MyContext context) 
    { 
     this.context = context; 
    } 

    public virtual T FindById(int id) 
    { 
     T result = default(T); 

     try 
     { 
      result = (T)context.Set<T>().Find(id); 
     } 
     catch (Exception ex) 
     { 
      // handle execption 
     } 

     return result; 
    } 

    public virtual T Add(T obj) 
    { 
     try 
     { 
      T result = context.Set<T>().Add(obj); 
      return result; 
     } 
     catch (Exception ex) 
     { 
      // handle execption 
     } 
    } 

    public virtual void DeleteById(int id) 
    { 
     try 
     { 
      T entity = context.Set<T>().Find(id); 
      context.Set<T>().Remove(entity); 
     } 
     catch (Exception ex) 
     { 
      // handle execption 
     } 
    } 

} 
+0

「カウンター」のコンストラクターを教えてください。 –

+0

ここには... – Sisyphus

+1

部門を保存したくない場合は、カウンタモデルに提供しないでください。データアクセスに関連するモデルをビジネスレイヤと別に保つ理由の1つ – Fabio

答えて

0

このquestionが答えを私にインスピレーションを得たということBaseCounterRepositoryあり、それが判明しました私は違ったものを使っていましたUnitOfWork ty)クラスのため、DivisionServiceクラスのDivisionクラスがCounterServiceクラスとそのDBContextに新しく見えて、再挿入されたのはこのためです。

関連する問題