2

我刚刚将我的 MVC3 项目(使用 C#)从 更新ObjectContextDbContext,但我遇到了一些奇怪的错误......

我正在使用数据库优先的方法,并且我有一个表,其中有一Name列 type nvarchar,它不为空。我将它更改为null在 SQL Server 中接受,然后我更新了我的edmx模型,删除了.tt文件并再次生成它(使用 ADO.NET DbContext)。

当我从该表创建一个新对象时,将属性的值设置为Namenull 我在.DbEntityValidationExceptionThe Name field is requireddb.SaveChanges()

但是该表在 Name 列上接受 NULL!我已经在 SQL Server 中用 SQL 插入了很多行,Name列中有 NULL!

任何人都知道我该如何解决?

一些信息

这是我的表 SQL:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Pre_Register](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](64) NULL,
    [Email] [nvarchar](64) NOT NULL,
    [Permission] [tinyint] NOT NULL,
    [Password] [nvarchar](256) NOT NULL
PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

这是自动生成的模型类:

public partial class Pre_Register
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public byte Permission { get; set; }
    public string Password { get; set; }
}

这是我得到错误的方式:

Pre_Register preReg = new Pre_Register();

db.Pre_Register.Add(preReg);

preReg.Email = "dudu@mail.com";
preReg.Permission = 1;
preReg.Password = "123456";
preReg.Name = null;

// here it comes
db.SaveChanges();
4

1 回答 1

1

我唯一看到的:

打开你的 edmx。

转到您的 Pre_Register 实体,选择您的 Name 属性,右键单击,属性,然后检查 Nullable 字段是否设置为 true。

如果不是,请将其设置为 true。这会很奇怪,但我找不到其他原因。

在此处输入图像描述

这意味着数据库首先是......不完美,或者你身边发生了一些事情......

于 2012-10-11T11:31:13.703 回答