我正在尝试这种代码优先的方法,但我现在发现System.Decimal类型的属性被映射到decimal(18,0)类型的sql列.
如何设置数据库列的精度?
命令: add-migration blahblah -verbose
错误:序列不包含任何元素
在收到此错误之前我做了一些事情.我对代码优先模型进行了更改,但尚未运行add-migration.然后我添加了一个EDMX模型来直观地展示一个想法.我意识到EDMX模型弄乱了我的代码所以我删除了它.我试图运行add-migration并得到"序列不包含任何元素".我升级到EF 5并卸载旧的Migrations包,但我的配置除外.然后我add-migration再次尝试,我仍然得到"序列不包含任何元素".以下是错误的其余部分.
System.InvalidOperationException: Sequence contains no elements
at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.GetQualifiedTableName(XDocument model, String entitySetName)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.<FindRenamedIndependentAssociationColumns>b__ba(<>f__AnonymousType16`2 <>h__TransparentIdentifieraa)
at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x)
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()
at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()
at System.Linq.Enumerable.<DistinctIterator>d__81`1.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, String connectionString)
at System.Data.Entity.Migrations.DbMigrator.Scaffold(String migrationName, String namespace, Boolean ignoreChanges)
at System.Data.Entity.Migrations.Design.MigrationScaffolder.Scaffold(String migrationName, Boolean ignoreChanges)
at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Scaffold(MigrationScaffolder scaffolder)
at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.RunCore()
at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
Sequence contains no elements
Run Code Online (Sandbox Code Playgroud) .net entity-framework ado.net-entity-data-model edmx ef-code-first
在将整数列与十进制值相乘并添加整数列时,EF6在处理舍入方面似乎不一致.
// CREATE TABLE MyTable (MyIntValue INT NOT NULL)
// INSERT INTO MyTable (MyIntValue) VALUES (10)
const int IntScale = 5;
const decimal DecimalScale = 5;
const decimal DecimalScale2 = 5.0m;
context.Set<MyTable>()
.Select(row => new
{
WithFloats = 0.5f + (row.MyIntValue * 5.0f), // 50.5
WithDecimals = 0.5m + (row.MyIntValue * 5.0m), // 51
WithDecimals2 = 0.5m + ((decimal)row.MyIntValue * 5.0m), // 50.5
WithDecimals3 = 0.5m + ((decimal)row.MyIntValue * IntScale), // 51
WithDecimals4 = 0.5m + ((decimal)row.MyIntValue * (decimal)IntScale) // …Run Code Online (Sandbox Code Playgroud) 在首先使用带有代码的 EF6 的 asp.net 5+ 中,如何存储带有 3 个小数点的十进制值?
即,我的字段需要能够存储 272.724
目前我有:
[DataType(DataType.Currency)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")]
[DisplayName("Report Fee")]
public decimal ReportFee { get; set; }
Run Code Online (Sandbox Code Playgroud)
我试过添加:
[Column(TypeName = "decimal(18,3)")]
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
The store type 'decimal(18,3)' could not be found in the SqlServer provider manifest
Run Code Online (Sandbox Code Playgroud)