我正在使用Entity Framework 6.0.2使用Sql Server进行代码优先。实体框架属性隐藏
我有一个称为实体的基类,因为我们不能扩展枚举我需要重新定义另一个类称为公司的属性类型,所以我使用新的关键字隐藏基本属性并重新定义它。
public interface IEntity
{
Guid Id { get; set; }
State State { get; set; }
}
public abstract class Entity : IEntity
{
public Guid Id { get; set; }
public State State { get; set; }
}
public enum State
{
Inactive = 0,
Active = 1
}
public class Company : Entity
{
public new CompanyState State { get; set; }
public string SomeOtherProp { get; set; }
}
public enum CompanyState
{
Inactive = 0,
Active = 1,
Extra = 2
}
我得到的问题是,当实体框架试图创建与此错误崩溃的DbContext:“有身份‘国家’已经存在的元数据集合中的参数名称的项目:项目”
我有一个解决方法:我可以将Entity类中的状态改为int,并将适当的枚举转换为int,但是我认为我会失去枚举所具有的类型安全/限制。
我想更改元数据信息以避免此错误,但我不知道如何。
为什么不加'Extra'的基本枚举?隐藏财产本身似乎是一个坏主意,更不用说改变类型了。 –
因为目标是只有这2个选项,并有一种方法来扩展选项的商业意义。 – DanielAlmeida
@DStanley我从IEntity中删除了状态,但是您认为重新定义属性是个坏主意吗?这不就是新关键字的重点吗? – DanielAlmeida