C# EF DatabaseInitializer通过带有重载的列表方法循环,
下面是我的C# EF DatabaseInitializer通过带有重载的列表方法循环,,c#,asp.net,linq,entity-framework,ef-code-first,C#,Asp.net,Linq,Entity Framework,Ef Code First,下面是我的initializer.cs,有人告诉我,为了保留我的guid,我必须使用导航属性,以便在数据库()中拥有正确的关系。这似乎解决了我之前遇到的问题,但现在我想获取我的信息并使用种子将其添加到数据库中,我不确定如何满足此错误。我得到的错误是addUsers(Applications apps)“eflogin.Models.Applications是一个像变量一样使用的“类型”。我感觉我这样做是错误的 public class DatabaseIntializer : DropCreat
initializer.cs
,有人告诉我,为了保留我的guid,我必须使用导航属性,以便在数据库()中拥有正确的关系。这似乎解决了我之前遇到的问题,但现在我想获取我的信息并使用种子将其添加到数据库中,我不确定如何满足此错误。我得到的错误是addUsers(Applications apps)
“eflogin.Models.Applications是一个像变量一样使用的“类型”。我感觉我这样做是错误的
public class DatabaseIntializer : DropCreateDatabaseIfModelChanges<DataContext>
{
protected override void Seed(DataContext context)
{
addApplications().ForEach(a => context.Applications.Add(a));
addUsers(Applications apps).ForEach(u => context.User.Add(u));
// if i take out Applications apps
// i get No overload for method"addUsers" takes 0 arguments
}
private static List<Applications> addApplications()
{
var apps = new List<Applications>
{
new Applications
{
ApplicationId = Guid.NewGuid(),
ApplicationName = "Test Login"
}
};
return apps;
}
private static List<Users> addUsers(Applications apps)
{
var use = new List<Users>
{
new Users
{
UserId = Guid.NewGuid(),
UserApplication = apps,
UserName = "Ralph",
IsAnonymouse = false,
LastActivityDate = System.DateTime.Now
}
};
return use;
}
公共类DatabaseInitializer:DropCreateDatabaseIfModelChanges
{
受保护的覆盖无效种子(DataContext上下文)
{
addApplications().ForEach(a=>context.Applications.Add(a));
addUsers(Applications.apps.ForEach(u=>context.User.Add(u));
//如果我拿出应用程序
//我没有为方法“addUsers”获取重载,该方法接受0个参数
}
私有静态列表addApplications()
{
var apps=新列表
{
新应用
{
ApplicationId=Guid.NewGuid(),
ApplicationName=“测试登录”
}
};
返回应用程序;
}
私有静态列表添加用户(应用程序)
{
var use=新列表
{
新用户
{
UserId=Guid.NewGuid(),
用户应用程序=应用程序,
用户名=“拉尔夫”,
IsAnonymouse=false,
LastActivityDate=System.DateTime.Now
}
};
归还使用;
}
问题在于您正在调用addUsers方法时传入类型和实例
addUsers(Applications apps)
如果你删除应用程序,然后像这样离开应用程序
addUsers(apps)
您将获得另一个错误,因为您正在传入一个对象集合,而该方法需要一个实例
下面是一个建议的对种子进行编辑的方法,可以让您克服这两个错误
var apps = addApplications();
apps.ForEach(a => context.Applications.Add(a));
foreach (var app in apps)
{
var users = addUsers(app)
users.ForEach(u => context.User.Add(u));
}
注意:我认为保持实体名称的复数形式有助于引起一些混乱。到目前为止,我明白了。你能解释一下apps中的
var应用程序吗?对不起,这是我唯一不明白的事情。我知道var应用程序
声明了它,但它在应用程序中是如何实现的?我不100%确定你不清楚什么,但这里可能有一些相关信息vant pages。您可以使用多个重载addUserInRoles(用户使用,角色).ForEach(ur=>context.UserInRoles.Add(ur))来实现这一点吗;
?您的意思是重载,还是因为示例代码没有addUserInRoles方法而只是指多个参数?对不起,术语错误。您的多个参数是正确的。如果您投了反对票,请留下+1是有效问题的原因,以抵消-1