将databasefirst aproach与ef5结合使用 float
mysql中的字段转换为 Single
中相应实体中的属性 DatabaseModel
. 逗号信息有时似乎完全丢失,例如:
1(mysql)->1(实体)
1,5(mysql)->15(实体)
0,2(mysql)->2e+08(实体)
在我的数据库里有 item
的生产商 tool
他和某些人在一起 productiondata
的。为每个 tool
有一个 productiondata
的(1对多)。也是每个 item
有一个 productiondata
的(1对多)。在我的代码中,有一个泛型函数将每个数据库表加载到 List<entity>
迫不及待地装货。 List<productiondata>
可以。 List<tool>
包括收藏 tool.productiondata
这也可以。 List<item>
包括收藏 item.productiondata
包含损坏的浮点值。我不明白为什么它两次工作一次不工作,因为所有的实体都是由下面相同的函数加载的。。。
public void loadFromDatabase<TEntity>(ref List<TEntity> lst, List<string> lstCollectionNames) where TEntity : class
{
using (var ctx = new techdbEntities1())
{
ctx.Configuration.LazyLoadingEnabled = false;
IQueryable<TEntity> dbSet = ctx.Set<TEntity>();
if (dbSet != null)
{
foreach (var collectionName in lstCollectionNames)
dbSet = dbSet.Include(collectionName); // 'Eager Loading'
lst = dbSet.ToList<TEntity>();
foreach (TEntity e in lst)
ctx.Entry(e).State = EntityState.Unchanged; // DBEntityEntry.State
foreach (TEntity e in lst)
e.GetType().GetProperty("State").SetValue(e, StateEnum.UnModified); // TEntity.State
}
}
}
现在我可以拿到 productiondata
对于来自的项目 List<productiondata>
而不是 item.productiondata
的 List<item>
,解决了表面问题。但我仍然对浮点数域腐败的原因很感兴趣。
以下是sql:
CONSTRAINT `fk_productiondata_item1`
FOREIGN KEY (`item_internalNr`)
REFERENCES `techdb`.`item` (`internalNr`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_productiondata_tool1`
FOREIGN KEY (`tool_basetool_internalNr` , `tool_number`)
REFERENCES `techdb`.`tool` (`basetool_internalNr` , `number`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
暂无答案!
目前还没有任何答案,快来回答吧!