實體框架:使用外鍵添加對象

c# entity-framework sql-server

我有2個工作崗位和時間表

工作

JobId - int,PK,Identity
ScheduleId - int,FK
標題 - varchar
描述 - varchar

時間表

ScheduleId - int,PK,Identity
名稱 - varchar

在刪除時級聯有一對多的關係。

當我創建實體模型時,生成的作業模型將刪除ScheduleId字段。

問題是我無法使用指定的ScheduleId插入新作業!

 Job job = new Job();
 job.title= "blabla";
 job.description="xyz";
 job.scheduleId=1// can't have this!

 if (job.EntityState == EntityState.Detached)
 {
      myContext.AddToJobs(job);
 }
 myContext.SaveChanges();

注意:我在Scheduleles表中有一行,scheduleId = 1。

熱門答案

您可以在不實際加載Schedule對象的情況下分配Schedule。像這樣的東西:

db = new OneToManyEntities(); 
var address = new Address { Address1 = "Oakumber st", City = "Dallas", State = "Tx", Zip = "76111" }; 
address.CustomerReference.EntityKey = new EntityKey("OneToManyEntities.Customer","CustomerId",2); 
db.AddToAddresses(address);

我不喜歡這種方法,你必須在字符串中硬編碼實體類型:/如果有人知道如何在沒有這種硬編碼的情況下這樣做 - 請評論。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因