子类用new隐藏基类属性时ODataConventionModelBuilder模型构建异常问题
解决方法
1. 忽略基类的CloudType属性
ODataConventionModelBuilder会自动扫描类的继承层次,基类的CloudType(int类型)和子类的同名枚举属性冲突导致报错。可以显式让构建器忽略基类的该属性:
var builder = new ODataConventionModelBuilder(); // 获取基类的实体类型配置,忽略其CloudType属性 var baseEntityConfig = builder.EntityType<WeatherForecastBase>(); baseEntityConfig.Ignore(b => b.CloudType); // 注册子类的实体集 builder.EntitySet<WeatherForecast>("WeatherForecasts"); // 生成EDM模型 var edmModel = builder.GetEdmModel();
2. 确保枚举类型被正确注册
如果枚举CloudType未被自动识别为OData枚举类型,需手动注册以避免后续类型错误:
// 在忽略基类属性前,先注册枚举类型 builder.EnumType<CloudType>();
配置完成后,构建器只会处理子类中用new关键字声明的CloudType枚举属性,不再受基类int类型属性影响,可成功构建模型。
内容的提问来源于stack exchange,提问作者Julio Ollarvia
相关产品推荐
相关产品推荐

