我创建了一个EF4.1代码优先模型(可能重要也可能不重要),我正在尝试获取我的创建脚手架模板的默认值.我的模型看起来像:
class Person {
[DefaultValue (18)]
public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我的Create视图看起来像:
<div class="editor-label">
@Html.LabelFor(model => model.Age)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Age)
@Html.ValidationMessageFor(model => model.Age)
</div>
Run Code Online (Sandbox Code Playgroud)
我希望在运行时,EditorFor会用"18"预先填充文本框,但它没有这样的东西.我误解了DefaultValue属性的用途,还是我应该做的其他事情?
注意:我不想new { Value = "18" }在EditorFor方法上使用覆盖,它似乎打破了DRY.
例如,我的大多数实体都有DateCreated和DateModified字段.这些默认设置在SQL Server中设置为GetUtcDate().
如果我尝试创建一个实体并且不设置这些值,我会得到一个异常,说它无法运行SQL插入,因为日期值超出范围.有意义,因为C#默认日期是1/1/0001,而SQL Server的最小日期是1/1/1753.
那么有没有办法告诉EF要么使用SQL Server默认值,要么尝试插入尚未设置的列?
我有一个首先生成数据库的实体框架上下文。我正在添加一个带有将由数据库生成的 GUID PK 的表。当我从数据库生成 EDMX 模型时,它将 StoreGeneratePattern 设置为“None”。
我需要手动将应用程序的 StoreGeneratePattern 更改为“Identity”,以便让数据库创建 ID。
有没有办法确保 EDMX 自动正确设置该值?