0

私はEFを学んでいます。以下のようなコードがあります。

キー アノテーションを追加したのは、シンボルを追加するときに一度だけ追加する必要があるためです。したがって、EUR/USD を追加する場合、別の EUR/USD は必要ありません。ただし、このプログラムの別の実行で、コードを実行すると、キーが既に存在すると不平を言います。データベースにまだない場合はコンテキストを作成するか、既に存在する場合はそれへの参照を取得するにはどうすればよいですか?

 using (var db = new TickDataTestContext())
            {
                var td = new SymbolTickDataEntity { Symbol = symbol };
                db.SymbolTickData.Add(td);
                db.SaveChanges();

                while (true)
                {
                    etc....


public class SymbolTickDataEntity
{
    public int SymbolTickDataEntityID { get; set; }

    [Key]
    [Required]
    public string Symbol { get; set; }

    public virtual IList<MarketDataDepthEntity> Mdds { get; set; }
    public SymbolTickDataEntity() { Mdds = new List<MarketDataDepthEntity>(); }
}

public class TickDataTestContext : DbContext
{
    public DbSet<MarketDataEntity> MarketData { get; set; }
    public DbSet<MarketDataDepthEntity> MarketDataDepth { get; set; }
    public DbSet<SymbolTickDataEntity> SymbolTickData { get; set; }
}
4

1 に答える 1

2

SymbolTickData をチェックして、挿入する前に存在するかどうかを確認できます。

    if(!db.SymbolTickData.Any(a => a.Symbol.Equals(symbol)))
    {
         db.SymbolTickData.Add(td);
         db.SaveChanges();
    }
于 2013-06-25T19:39:13.497 に答える