您好我使用C#和EF 4。
我有两个实体CmsContent
和CmsJob
。
CmsJob
的导航属性为CmsContent
。
我需要使用导航属性向CmsContent
添加CmsJob
对象。
我的代码运行没有错误,但我不能保留新的数据库条目。
你可以告诉我我做错了什么吗? 请给我一个代码示例。感谢您的支持! using (CmsConnectionStringEntityDataModel context = new CmsConnectionStringEntityDataModel())
{
CmsContent myContent = context.CmsContents.FirstOrDefault(x => x.ContentId == contentId);
CmsJob myJob = context.CmsJobs.FirstOrDefault(x => x.JobId == jobId);
myJob.CmsContents.Add(myContent);
}
答案 0 :(得分:2)
那是因为你没有保存更改。试试这个:
using (CmsConnectionStringEntityDataModel context = new CmsConnectionStringEntityDataModel())
{
CmsContent myContent = context.CmsContents.FirstOrDefault(x => x.ContentId == contentId);
CmsJob myJob = context.CmsJobs.FirstOrDefault(x => x.JobId == jobId);
myJob.CmsContents.Add(myContent);
context.SaveChanges();
}
答案 1 :(得分:2)
根据@ Hasan的回答,根据您的回答,您错误地定义了数据库。您的作业和内容是多对多关系,因此您有一个名为CmsJobsContents
的联结表,但此表缺少主键。因此,它对于EF是只读的,您无法在应用程序中创建新关系。您必须转到数据库并将CmsJobsContents
中的两个FK标记为主键。之后,从数据库更新您的模型,您应该能够保存更改。