2013-06-25 4 views
0

나는 EF를 배우고있다. 나는 아래와 같은 코드를 가지고있다.중복 추가 피하기

기호를 추가 할 때 한 번 더 추가해야하므로 Key 주석을 추가했습니다. 따라서 EUR/USD를 추가하면 다른 EUR/USD를 원하지 않습니다. 그러나이 프로그램을 여러 번 실행하면 코드를 실행할 때 키가 이미 있다고 불평합니다. 컨텍스트가 이미 db에 없다면 컨텍스트를 만들거나 컨텍스트가 이미 존재하면 컨텍스트를 가져 오는 방법은 무엇입니까?

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; } 
} 

답변

2

SymbolTickData를 검사하여 삽입하기 전에 확인할 수 있습니다.

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

고맙습니다. – user1676605