下面是我的Intializer.cs
,我被告知为了保留我的 Guid,我必须使用导航属性,以便在我的数据库中具有正确的关系(在 EF Code First DatabaseIntializer 中重用 GUID)。这似乎解决了我之前遇到的问题,但现在我想获取我的信息并使用 Seed 将其实际添加到数据库中,我不确定如何满足此错误。我收到错误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;
}
问题是你在对 addUsers 方法的调用中传入类型和实例。
addUsers(Applications apps)
如果您删除应用程序并像这样离开应用程序。
addUsers(apps)
您将收到另一个错误,因为您正在传入对象集合,并且该方法需要单个实例。
下面是对 Seed 方法的建议编辑,应该可以让您克服这两个错误。
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));
}
注意:我认为保持实体名称复数有助于引起一些混乱。