Tôi đã tìm kiếm một chút về vấn đề của mình nhưng không thể tìm thấy bất kỳ thứ gì thực sự hữu ích.Khung thực thể - UPSERT trên các chỉ mục duy nhất
Vì vậy, vấn đề của tôi/dilema vẫn như thế này: Tôi biết rằng cơ sở dữ liệu mysql có một hệ thống chỉ số duy nhất mà có thể được sử dụng để chèn/cập nhật trong cùng một truy vấn sử dụng định dạng này: insert into t(a,b,c) values(1,1,1) on duplicate keys update b=values(b),c=values(c);
và một định dạng thay thế sử dụng để thay thế một bản ghi hiện có theo chỉ mục đó.
phải trung thực những thứ tương tự như duy nhất mà tôi nhìn thấy trong MSSQL là merge
nhưng tôi thực sự không thích điều đó chút nào và xác minh một truy vấn để chèn hoặc cập nhật không phải là chỉ số duy nhất dựa sau khi tất cả ...
Vậy làm thế nào tôi có thể mô phỏng UPSERT duy nhất của mysql thành Entity Framework? đây là vấn đề chính của tôi ...
Ý tôi là không nhận được bản ghi từ bộ thực thể và kiểm tra bản ghi nếu không có hoặc không để có thể chèn hoặc cập nhật;
Tôi có thể lấy nó không? Hay không? Bất kỳ gợi ý có thể hữu ích
tôi thấy this nhưng không xuất hiện vào phiên bản 6 ...
ví dụ về thực thể:
[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; }
}
Vì vậy, tôi muốn cập nhật/chèn dựa trên IX_ProviderBoat của tôi chỉ số duy nhất sử dụng EF
Mô hình dữ liệu của bạn không lý tưởng cho EF. Bạn có cần phải có một 'Boat.id' cũng như ba phím duy nhất trong bảng' thuyền' của bạn? Tại sao không sử dụng 'Boat.provider_code' làm khóa chính của bạn? Ngoài ra, 'AddOrUpdate()' có sẵn trong EF6. – wahwahwah
AddOrUpdate có sẵn trong EntityFramework6. Có thể bạn phải kiểm tra với các tình trạng quá tải khác như đã đề cập http://stackoverflow.com/questions/22287852/entityframework-6-addorupdate-not-working-with-compound-or-composite-primary-key –
@wahwahwah 1) id chỉ là một định danh (không phải là khóa chính); 2) AddOrUpdate không hiển thị trên phiên bản 6.0.0.0 EF của tôi; 3) provider_code là khóa chính và cũng là nhóm phần chỉ mục duy nhất; – HellBaby