を含む複合主キーを設定する私は、次のように定義されたエンティティのカーブとポイントの間に1対多の関係を持っている:どのように外部キー(EF流暢API)
public class Curve
{
public Curve()
{
Points = new HashSet<Point>();
}
public int CurveId { get; set; }
public string Name { get; set; }
public virtual ICollection<Point> Points { get; set; }
}
そして:
私のコンテキストクラスでpublic class Point
{
public int Point_Num { get; set; }
public int CurveId { get; set; }
public double XCoord { get; set; }
public double YCoord { get; set; }
public virtual Curve Curve { get; set; }
}
次のように、私は(ポイントエンティティは複合主キーを持っていることに注意してください)キーとナビゲーションプロパティを設定します。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Curve>()
.HasKey(c => c.CurveId);
modelBuilder.Entity<Point>()
.HasKey(p => new { p.Point_Num, p.CurveId });
modelBuilder.Entity<Point>()
.HasRequired(p => p.Curve)
.WithMany(c => c.Points)
.HasForeignKey(p => p.CurveId);
}
「エントリを更新中にエラーが発生しました。」
var curve = new Curve
{
Name = "curve 1"
};
var points = new List<Point>();
points.Add(new Point
{
XCoord = 1d,
YCoord = 1d,
});
points.Add(new Point
{
XCoord = 2d,
YCoord = 2d,
});
foreach (var point in points)
{
curve.Points.Add(point);
}
using (var dbCtxt = new MyDbContext())
{
try
{
dbCtxt.Curves.Add(curve);
dbCtxt.SaveChanges();
}
catch (Exception e)
{
Console.WriteLine(e.StackTrace);
}
}
はエラーがのSaveChanges()が呼び出されたときにスローされます
どこか他のコードでは、私は、データベースを作成します
ポイントエンティティの主キーとしてPoint_Numを定義すると、すべてのエンティティが正常に更新されます。複合プライマリキー(Point_Num、CurveId)に外部キー(CurveId)が含まれているという事実が原因であるようです。
私はこのことを頭にすることはできません。どんな助けでも大歓迎です!