我正在学习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; }
}
答案 0 :(得分:2)
您可以在插入之前检查SymbolTickData以查看它是否存在。
if(!db.SymbolTickData.Any(a => a.Symbol.Equals(symbol)))
{
db.SymbolTickData.Add(td);
db.SaveChanges();
}