1

データベースにdropdownlistforない値があり、ユーザーがデータベースに存在しない値を選択した場合、それをデータベースに保存したいと思います(既に存在する場合は、既存のデータを使用します)。

これは私のデータの一部でうまく機能します(機能しない場所についてはコードを参照してください)

これは私のリポジトリです:

 public void newPerson(Person addperson)
    {
        db.Person.AddObject(addperson);
        db.SaveChanges(); //This wont work
    }

ここに私のコントローラーがあります:

[HttpPost]
    public ActionResult Create(CreateNKIphase1ViewModel model)
    {
        if (ModelState.IsValid)
        {
            var goalcard = new GoalCard();

            var companyChecker = "";
            var dbCompanies = createNKIRep.GetCustomerByName();
            var addcustomer = new Customer();
            foreach (var existingcustomer in dbCompanies)
            {
                companyChecker = existingcustomer.CompanyName;
                    if (existingcustomer.CompanyName == model.CompanyName)
                    {
                        var customerId = existingcustomer.Id;
                        var selectedCustomerID = createNKIRep.GetByCustomerID(customerId);
                        goalcard.Customer = selectedCustomerID;
                        break;
                    }
            }
            if (companyChecker != model.CompanyName)
            {
                addcustomer.CompanyName = model.CompanyName;
                createNKIRep.newCustomer(addcustomer); //This works!
                goalcard.Customer = addcustomer;
            }

            if (model.PersonName != null)
            {
                var Personchecker = "";
                var dbPersons = createNKIRep.GetPersonsByName();

                foreach (var existingPerson in dbPersons)
                {
                    Personchecker = existingPerson.Name;
                    if (existingPerson.Name == model.PersonName)
                    {
                        var personId = existingPerson.Id;
                        var selectedPersonID = createNKIRep.GetByPersonID(personId);
                        goalcard.Person = selectedPersonID;
                        break;
                    }
                }
                if (Personchecker != model.PersonName)
                {
                    Person newPerson = new Person();
                    newPerson.Name = model.PersonName;
                    createNKIRep.newPerson(newPerson);//Where repository is called
                    goalcard.Person = newPerson;
                }
            }

しかし、新しいものを保存しようとするとPerson、次のエラー メッセージが表示されます。

datetime2 データ型を datetime データ型に変換すると、範囲外の値になりました。ステートメントは終了されました。

説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

私のデータベースには属性としてとPersonしかありませんが。Idname

私のコードに何か問題がありますか、それともデータベースの設定を変更する必要がありますか?

前もって感謝します。

4

1 に答える 1

0

db.SaveChanges();1回で複数回使用するからpostです。使用する時間を減らすことdb.SaveChangesで、エラーを取り除くことができました。

于 2012-05-15T07:23:23.617 に答える