我很擅长编码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 => id.UserId >= 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;
}
}
}