Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 避免添加重复项_Entity Framework_Ef Code First - Fatal编程技术网

Entity framework 避免添加重复项

Entity framework 避免添加重复项,entity-framework,ef-code-first,Entity Framework,Ef Code First,我正在学习EF。我有如下代码 我添加了键注释,因为当我添加符号时,它应该添加一次,不能再添加了。因此,如果加上欧元/美元,我不想要不同的欧元/美元。但是,在这个程序的不同运行中,当我运行代码时,它会抱怨密钥已经存在。如果上下文不在数据库中,如何创建上下文;如果上下文已经存在,如何获取对它的引用 using (var db = new TickDataTestContext()) { var td = new SymbolTickDataE

我正在学习EF。我有如下代码

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

 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; }
}
使用(var db=new TickDataTestContext())
{
var td=新的SymbolTickDataEntity{Symbol=Symbol};
db.SymbolTickData.Add(td);
db.SaveChanges();
while(true)
{
等
公共类SymbolTickDataEntity
{
public int SymbolTickDataEntityID{get;set;}
[关键]
[必需]
公共字符串符号{get;set;}
公共虚拟IList MDD{get;set;}
public SymbolTickDataEntity(){Mdds=new List();}
}
公共类TickDataTestContext:DbContext
{
公共DbSet MarketData{get;set;}
公共数据库集MarketDataDepth{get;set;}
公共DbSet SymbolTickData{get;set;}
}

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

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