【发布时间】:2015-06-03 09:29:42
【问题描述】:
我正在尝试根据类的同一实例中的两个其他属性值的组合来设置数据模型属性值。我希望它在类被实例化时自动工作。但是,如果我要使用构造函数来执行此操作,则此时不会设置任何其他模型属性。
然后,每当我尝试访问该属性时,都会返回 null。任何有关如何处理这种情况的指导将不胜感激。
型号:
我正在尝试将VersionSchemeCode 设置为具有Version 和Scheme.SchemeCode 组合的值。但是,没有任何内容保存到数据库中。
public class SchemeVersion
{
private string _VersionSchemeCode;
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public int Version { get; set; }
[Required]
public int SchemeId { get; set; }
[ForeignKey("SchemeId")]
public virtual Scheme Scheme { get; set; }
public string VersionSchemeCode
{
get
{
return _VersionSchemeCode;
}
set
{
using(var db = new MyDbContext())
{
var schemeCode = db.Schemes.SingleOrDefault(x => x.SchemeId == this.SchemeId).SchemeCode;
_VersionSchemeCode = String.Format("{0}_V{1}", schemeCode, this.Version.ToString());
}
}
}
}
【问题讨论】:
-
那个 setter 会让用户大吃一惊:它不使用分配的值。记住 .NET 指南:setter 看起来应该接近于设置底层字段,和应该很快。忽略分配的值并访问数据库肯定会错过。
标签: c# entity-framework asp.net-mvc-4 setter