【发布时间】:2011-04-20 13:25:44
【问题描述】:
我一直在我的 POCO 中使用 Money 的自定义类型,并尝试将其插入到我的数据库中,但它隐式被 Entity Framework 丢弃了。
这是我的简单代码;
我的类型;
public struct Money
{
private static decimal _value;
public Money(Decimal value)
{
_value = value;
}
public static implicit operator Money(Decimal value)
{
return new Money(value);
}
public static implicit operator decimal(Money value)
{
return _value;
}
}
我的对象;
public class MyObject
{
[Key]
public int Id { get; set; }
public Money MyMoney { get; set; }
}
我的背景;
public class Data : DbContext
{
public Data()
: base("Data Source=.;Database=MyTest;Integrated Security=True")
{}
public DbSet<MyObject> MyObject { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<MyObject>()
.Property(p => p.MyMoney).HasColumnName("MyMoney");
}
}
当我使用此代码时,我收到以下错误。
“MyMoney”属性不是 在类型“MyObject”上声明的属性。 确认该属性未被 明确地从模型中排除 使用忽略方法或 NotMappedAttribute 数据注释。 确保它是有效的原语 属性。
我猜问题出在最后一句话……那么,什么是有效的原始属性?有没有其他方法可以解决这个问题?
【问题讨论】:
-
各位,也许你能帮帮我:stackoverflow.com/q/6794565/828162
标签: c# ef-code-first code-first entity-framework-4.1