gpt4 book ai didi

c# - LINQ to SQL,不为空,使用默认值

转载 作者:行者123 更新时间:2023-11-30 17:51:41 24 4
gpt4 key购买 nike

我将 EF 与 DB First 结合使用。我的表看起来像这样:

CREATE TABLE [dbo].[Person](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) NOT NULL,
[dob] [datetime] NOT NULL
CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED )
GO
ALTER TABLE [dbo].[Person]
ADD CONSTRAINT [DF_Person_dob] DEFAULT ('12.12.3000') FOR [dob]

在使用 DB First 后,我​​得到以下部分 Person 类:

using System;

public partial class Person
{
public int id { get; set; }
public string name { get; set; }
public System.DateTime dob { get; set; }
}

我遇到的问题是,当我想使用数据库为“dob”字段生成的默认值时,我得到了一个异常,因为不允许空值。我正在尝试这样做:

 using (var db = new NullTestEntities())
{
var person = db.Person.Create();
person.name = "John Doe";
db.Person.Add(person);
db.SaveChanges();
}

我试过添加

 Column(IsDataBaseGenerated=true)

但我无法编译,因为出现错误:

'System.ComponentModel.DataAnnotations.Schema.ColumnAttribute' does not contain a definition for 'IsDatabaseGenerated'

如何在C#代码中不定义dob属性,让数据库生成默认值?

最佳答案

您是说希望 dob 字段允许空值还是希望 dob 为默认值?

如果它是默认值,我认为你应该弹出以下内容以在人员类中设置日期

public partial class Person
{
public Person(){
dob = DateTime.Now; // or whatever
}

public int id { get; set; }
public string name { get; set; }
public System.DateTime dob { get; set; }
}

如果你说你想允许空值,那么把 dob 改成

public Nullable<DateTime> dob {get;set;}   

public DateTime? dob {get;set;}

关于c# - LINQ to SQL,不为空,使用默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19133655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com