C# EF添加迁移未检测泛型
我有以下课程C# EF添加迁移未检测泛型,c#,entity-framework,entity-framework-migrations,C#,Entity Framework,Entity Framework Migrations,我有以下课程 public class PricingRuleNumberRange { public decimal? FromValue { get; private set; } public decimal? ToValue { get; private set; } protected PricingRuleNumberRange() {} public PricingRuleNumberRange(decimal? fromValue, decim
public class PricingRuleNumberRange
{
public decimal? FromValue { get; private set; }
public decimal? ToValue { get; private set; }
protected PricingRuleNumberRange() {}
public PricingRuleNumberRange(decimal? fromValue, decimal? toValue)
{
FromValue = fromValue;
ToValue = toValue;
}
...
}
以及使用所述类的模型
public class PricingRule
{
public PricingRuleNumberRange LVR { get; private set; }
protected PricingRule() { }
public PricingRule(...)
{
...
}
public void UpdateDetails(PricingRuleNumberRange lvr)
{
LVR = lvr;
}
}
我可以将一个新的PricingRuleNumberRange
属性添加到PricingRule
并调用add Migration
,它将检测并构建更改而不会出现问题。但是,我现在需要添加另一个PricingRuleNumberRange
属性,该属性仅为int
,而不是decimal
。我认为将PricingRuleNumberRange
转换为泛型类是可以接受的,但是addmigration
现在会删除LVR
属性/列
这是新的代码
public class PricingRuleNumberRange<T> where T : struct, IComparable<T>
{
public T? FromValue { get; private set; }
public T? ToValue { get; private set; }
protected PricingRuleNumberRange() {}
public PricingRuleNumberRange(T? fromValue, T? toValue)
{
FromValue = fromValue;
ToValue = toValue;
}
...
}
public class PricingRule
{
public PricingRuleNumberRange<decimal> LVR { get; private set; }
public PricingRuleNumberRange<int> NewCol { get; private set; }
protected PricingRule() { }
public PricingRule(...)
{
...
}
public void UpdateDetails(PricingRuleNumberRange<decimal> lvr)
{
LVR = lvr;
}
}
public类PricingRuleNumberRange其中T:struct,IComparable
{
公共T?FromValue{get;private set;}
公共T?ToValue{get;private set;}
受保护的PricingRuleNumberRange(){}
公共PricingRuleNumberRange(T?fromValue,T?toValue)
{
FromValue=FromValue;
ToValue=ToValue;
}
...
}
公共课收费
{
公共PricingRuleNumberRange LVR{get;private set;}
public PricingRuleNumberRange NewCol{get;private set;}
受保护的PricingRule(){}
公共定价(…)
{
...
}
public void UpdateDetails(PricingRuleNumberRange lvr)
{
LVR=LVR;
}
}
因为我在属性声明中指定了
int
/decimal
,所以我认为它仍然会选择它,但显然不会。我怀疑我可能需要在DbContext.OnModelCreating()
方法中执行一些操作,或者可能需要在某些属性中添加一些属性以使其正常工作?原因很清楚。EF确实知道泛型类型类PricingRuleNumberRange
。因此,我们需要显式地告诉datatypeI,我在PricingRule类中是显式的。当然,反思可以解决这个问题。否则,如何显式地告诉它数据类型?