是否有"优雅"的方式给特定属性一个默认值?
也许通过DataAnnotations,类似于:
[DefaultValue("true")]
public bool Active { get; set; }
Run Code Online (Sandbox Code Playgroud)
谢谢.
我收到此错误:
无法将MySQL日期/时间值转换为System.DateTime
而我正在尝试从MySQL数据库中获取数据.我的MySQL数据库中有date数据类型.但是在将其检索到我的数据表中时,它会得到上面的错误.
我怎样才能解决这个问题?
我有一个DateTime房产.我需要这个属性的默认值DateTime.Now.然后我发现您可以指定一个属性StoreGeneratedPattern="Computed"并将其设置为(getdate())SQL.这成功了.但我无法在代码中更改此属性.有时我需要将此属性更改为任何DateTime值.但是我的更改没有保存.
c# entity-framework sql-server-2005 ado.net-entity-data-model
我开始创建这样的模型:
public abstract class EditableBase
{
public DateTime CreatedOn { get; set; }
public DateTime ModifiedOn { get; set; }
public int CreatedBy { get; set; }
public int ModifiedBy { get; set; }
}
public class Project : EditableBase
{
public int ProjectId { get; set; }
public string ProjectName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我在应用程序启动时使用此行:
Database.SetInitializer<ModelContext>(
new DropCreateDatabaseIfModelChanges<ModelContext>());
Run Code Online (Sandbox Code Playgroud)
创建一个名为Projects的表,其中包含上面提到的所有属性...这正是我想要的.
但是,现在我需要在DbContext上发出SaveChanges()时填充一些默认值.当我保存时,我需要使用适当的值更新ModifiedOn和ModifiedBy属性.
通常我至少会在数据库端(触发器或存储过程)执行DateTime值,但这显然不是一个选项,因为数据库将在类更改时随时删除.因为我先做了代码,所以我没有一个可以调整属性的模型设计器.
我想要做的是在EditableBase类中添加一个方法,该方法在执行SaveChanges()时被调用,从而将所有逻辑都保存在一个地方.是否有可能做到这一点?实现目标的最佳方法是什么?
可能重复:
将DateTime属性的默认值设置为System.ComponentModel内的DateTime.Now默认值Attrbute
我创建一个像日历一样的控件,我希望用户设置他们想要查看的年份.但如果他们不这样做,SelectedYear的财产必须是实际的年份.
我尝试像这样设置此默认值:
[DefaultValue(DateTime.Today.Year)]
public int SelectedYear{
get{
return _selYear;
}
set{
_selYear = value;
UpdateCalendar();
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type
Run Code Online (Sandbox Code Playgroud)