2013-01-02 31 views
1

来创建一个行我有这样的一段代码:ASP.NET MVC - EF代码首先不希望在我的数据库

var data = context.Accounts.Where(a => a.UserName == User.Identity.Name).Select(a => a.UserAddons).SingleOrDefault(); 
if (data == null) 
    data = new UserAddons(); 
{setting up properties of data} 
context.SaveChanges(); 

我想它来创建UserAddons的新行。但它不想。我是否需要选择整个帐户实体来执行此操作?

+2

您需要将新实体添加到上下文 –

回答

1

您可能忘记将新实体添加到上下文中。试试这个(未测试):

bool isNew = false; 
var data = context.Accounts.Where(a => a.UserName == User.Identity.Name).Select(a => a.UserAddons).SingleOrDefault(); 

if (data == null) 
{ 
    data = new UserAddons(); 
    isNew = true; 
} 

// setting up properties of data 

if(isNew) 
    context.Add(data); 

context.SaveChanges(); 
+0

呀。但后来我需要第二次查找账户实体,才能正确关联实体。 : -/ – ojek

+0

然后,您需要先使用关联的UserAddons加载帐户实体。如果没有,创建新的实体。 PS:你使用的是DbContext还是ObjectContext? –

+0

我正在使用DbContext。为什么这很重要? – ojek

1

如果我正确理解你的模型,你应该添加新UserAddonsAccount

var account = context.Accounts.Where(a => a.UserName == User.Identity.Name).Single(); 

if (account.Addons == null) 
    account.UserAddons = new UserAddons(); 

{setting up properties of account.Addons} 

context.SaveChanges(); 
相关问题