0

下面是我的Intializer.cs,我被告知为了保留我的 Guid,我必须使用 Navigation 属性,以便在我的数据库中拥有正确的关系(在 EF Code First DatabaseIntializer 中重用 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;

            }
4

1 回答 1

1

问题是您在调用 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));
}

注意:我认为保持实体名称的复数有助于造成一些混乱。

于 2013-01-24T17:57:10.907 回答