برای مواردی که کلید اصلی Identity نباشه راه حلی هست ؟
کد
namespace TestKeys
{
class Program
{
public class Bill
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string Id { get; set; }
public decimal Amount { set; get; }
[ForeignKey("AccountId")]
public virtual Account Account { get; set; }
public string AccountId { set; get; }
}
public class Account
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string Id { get; set; }
public string Name { get; set; }
}
public class MyContext : DbContext
{
public DbSet<Bill> Bills { get; set; }
public DbSet<Account> Accounts { get; set; }
}
public class BillFromWebsrv
{
public string Id { get; set; }
public decimal Amount { set; get; }
public DateTime DateTime { get; set; }
public Account Account { get; set; }
}
static void Main(string[] args)
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>());
using (var ctx = new MyContext())
{
foreach (var dummyBill in DummyBills())
{
var bl = new Bill { Id = dummyBill.Id, Amount = dummyBill.Amount, Account = dummyBill.Account };
ctx.Bills.Add(bl);
}
ctx.SaveChanges();
}
}
public static List<BillFromWebsrv> DummyBills()
{
return new List<BillFromWebsrv>
{
new BillFromWebsrv
{
Id = "1",
Amount = 1231,
DateTime = DateTime.Now,
Account = new Account {Id = "1", Name = "ac1"}
},
new BillFromWebsrv
{
Id = "2",
Amount = 1232,
DateTime = DateTime.Now,
Account = new Account {Id = "2", Name = "ac2"}
},
new BillFromWebsrv
{
Id = "3",
Amount = 1233,
DateTime = DateTime.Now,
Account = new Account {Id = "2", Name = "ac2"}
},
new BillFromWebsrv
{
Id = "4",
Amount = 1134,
DateTime = DateTime.Now,
Account = new Account {Id = "3", Name = "ac3"}
}
};
}
}
}
ارور
{"Violation of PRIMARY KEY constraint 'PK_dbo.Accounts'. Cannot insert duplicate key in object 'dbo.Accounts'. The duplicate key value is (2).\r\nThe statement has been terminated."}