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 に答える