遇到简单的EF6(C#)Winform从详细信息表格中保存数据的问题

时间:2015-04-07 02:23:18

标签: c# entity-framework entity

我很擅长编码ADO.Net/entity框架的东西。我试图跟随" Microsoft ADO.NET实体框架一步一步",Microsoft Press Mueller。我使用安装了EF6的VS 2012。

启动一个新项目,并添加一个新的Empty ADO.NET实体数据模型。它很简单,一些标量和一个名为UserFavorites的枚举。然后添加数据源>对象>深入到我的UserFavorites对象并完成。我将数据源选项卡上的脚趾UserFavorites对象更改为详细视图(以及其他一些更改,如组合框和其他标签)。然后将UserFavorites对象拖到窗体中。它创建了一个Binding源和绑定导航器。启用保存按钮并输入下面的代码后,它运行得很好,并从数据库中获取可以在其间滚动的记录。问题是当我单击加号添加记录,填写它,然后单击保存,我得到验证错误。在...上 隐藏复制代码  UserFavoritesContext.SaveChanges(); 线。第一个错误是 "例外:抛出:"' 1/1/0001 12:00:00 AM'对于'值'无效。 '值'应该在'MinDate'之间和' MaxDate'。" (System.ArgumentOutOfRangeException)"

表单上有一个日期选择器,它已正确填写。如果我从模型中删除该项目,我会在模型中的下一个项目上出错。由于某种原因,它不会拉动表单上填写的数据并尝试使用默认值(或null)。

我无法在网上找到有这个问题的其他人,所以我想我错过了一些愚蠢的话。我完全按照这本书(并且无法找到该书的帮助论坛)。我希望这足以让某人提供一些指导。

项目的形式和数据源,模型,错误和zip的图像位于 https://www.dropbox.com/sh/z6yhvbp1uk7bobm/AADa7fnS82PzwNLlPrycnCYza?dl=0

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace UserFavoritesEF6
{
    public partial class Form1 : Form
    {
        // Define the context used to access the database.
        UserFavoritesModelContainer UserFavoritesContext;

<pre>
    public Form1()
    {
        InitializeComponent();

        // Initialize the database context.
        UserFavoritesContext = new UserFavoritesModelContainer();

        // Query the database for the records you want.
        var dbQuery =
           UserFavoritesContext.UserFavorites.Where(id =&gt; id.UserId &gt;= 0).ToArray();
    }

    private void userFavoritesBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
        UserFavoritesContext.SaveChanges();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

        // Assign a local copy of the queried records to the
        // binding source.
        userFavoritesBindingSource.DataSource =
           UserFavoritesContext.UserFavorites.Local;

        // Fill the Favorite Colors list with acceptable colors and
        // choose a default.
        favoriteColorComboBox.DataSource = Enum.GetValues(typeof(ColorNames));
        favoriteColorComboBox.SelectedItem = ColorNames.Red;
    }

}

}

0 个答案:

没有答案