Я немного искал свою проблему, но не могу найти ничего, что действительно могло бы помочь.
Итак, моя проблема/дилемма остается такой:
Я знаю, что база данных mysql имеет уникальную систему индексов, которая может использоваться для вставки/обновления в том же запросе, используя этот формат:
insert into t(a,b,c) values(1,1,1) on duplicate keys update b=values(b),c=values(c);
и формат замены, используемый для замены существующей записи этим индексом.
честно говоря, единственный подобный материал, который я видел в MSSQL, - это merge
, но мне это совсем не нравится, и проверка запроса на вставку или обновление не является уникальным индексом, основанным на всех...
Итак, как я могу эмулировать mysql уникальный UPSERT в Entity Framework? это моя главная проблема...
Я имею в виду, не получая запись из набора объектов и проверяя ее, если она является нулевой или нет для возможной вставки или обновления;
Могу ли я получить его? Или нет? Любой намек может быть полезным
Я видел этот, но не появляется в версии 6...
пример объекта:
[Table("boats")]
public class Boat
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int id { get; set; }
[MaxLength(15)]
[Index("IX_ProviderBoat",1,IsUnique=true)]
public string provider_code { get; set; }
public string name { get; set; }
[Index("IX_ProviderBoat", 3, IsUnique = true)]
[MaxLength(50)]
public string model { get; set; }
[Index("IX_ProviderBoat", 2, IsUnique = true)]
[MaxLength(15)]
[Key]
public string boat_code { get; set; }
public string type { get; set; }
public int built { get; set; }
public int length { get; set; }
}
Итак, я хочу обновить/вставить на основе моего уникального индекса IX_ProviderBoat, используя EF