避免添加重复

时间:2013-06-25 19:34:23

标签: entity-framework ef-code-first

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

我添加了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; }
}

1 个答案:

答案 0 :(得分:2)

您可以在插入之前检查SymbolTickData以查看它是否存在。

    if(!db.SymbolTickData.Any(a => a.Symbol.Equals(symbol)))
    {
         db.SymbolTickData.Add(td);
         db.SaveChanges();
    }