0
私は一致コードを生成する次のエンティティクラスを持っていますので、重複する一致が入力されないようにすることができます。EntityコンストラクタにDbContextを渡す必要がありますか?
public class CompanyMatch
{
public int ID { get; set; }
/// <summary>
/// {CompanyID}-{CompanyMatchMethod}-{CompaniesHouseRecordID}
/// </summary>
[StringLength(100)]
[Index(IsUnique = true)]
[Required]
public string MatchCode { get; set; }
public CompanyMatchMethod CompanyMatchMethod { get; set; }
public virtual Company Company { get; set; }
public virtual CompaniesHouseRecord CompaniesHouseRecord { get; set; }
public CompanyMatch(int companyId, CompanyMatchMethod matchMethod, int companiesHouseId)
{
this.MatchCode = companyId.ToString() + "-" + matchMethod + "-" + companiesHouseId.ToString();
this.CompanyMatchMethod = matchMethod;
using (var db = new PlaceDBContext())
{
this.Company = db.Companies.Find(companyId);
this.CompaniesHouseRecord = db.CompaniesHouseRecords.Find(companiesHouseId);
}
}
}
コンストラクタでコードの作成を処理する方が簡単なので、コンストラクタにも関係を設定させるようにしました。
これに伴う問題はMatchMethod
を作成し、呼び出し元のコードが、それは新しいMatchMethod
を追加することができます前に、ネストされたCompany
とCompaniesHouseRecord
を添付する必要があるということです。
これはすべて不器用な感じで、コンストラクタがパラメータとしてDbContext
を取るべきかどうか、私はこれを別の方法で行うべきでしょうか?私はこのようにそれをやっているし、それが正常に動作しますが、私は、これはそれを行うの悪い方法であるかどうかわからないのです
:
public class CompanyMatch
{
public int ID { get; set; }
/// <summary>
/// {CompanyID}-{CompanyMatchMethod}-{CompaniesHouseRecordID}
/// </summary>
[StringLength(100)]
[Index(IsUnique = true)]
[Required]
public string MatchCode { get; set; }
public CompanyMatchMethod CompanyMatchMethod { get; set; }
public virtual Company Company { get; set; }
public virtual CompaniesHouseRecord CompaniesHouseRecord { get; set; }
public CompanyMatch(int companyId, CompanyMatchMethod matchMethod, int companiesHouseId, DbContext db)
{
this.MatchCode = companyId.ToString() + "-" + matchMethod + "-" + companiesHouseId.ToString();
this.CompanyMatchMethod = matchMethod;
this.Company = db.Companies.Find(companyId);
this.CompaniesHouseRecord = db.CompaniesHouseRecords.Find(companiesHouseId);
}
}
これを達成するためにナビゲーションプロパティを使用するにはどうすればよいですか? – Guerrilla