0

我正在学习英孚。我的代码如下所示。

我添加了 Key 注释,因为当我添加一个符号时,它应该添加一次,不能再添加。因此,如果添加欧元/美元,我不想要不同的欧元/美元。但是,在该程序的不同运行中,当我运行代码时,它会抱怨密钥已经存在。如果上下文不在数据库中,如何创建上下文,或者如果它已经存在,如何获取对它的引用?

 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 回答