我有这个代码:
public ObjectModel.Path GetPath(int pathid)
{
var path = this.DbContext.Paths.Find(pathid);
var app = GetApplicationById(path.ApplicationId.GetValueOrDefault());
var p = new Path
{
ApplicationId = path.ApplicationId,
Id = path.Id, Password = path.Password,
UserName = path.UserName,
LocalUrl = string.IsNullOrEmpty(path.LocalUrl) ? null : System.IO.Path.Combine(path.LocalUrl, app.Name)
};
return p;
}
Run Code Online (Sandbox Code Playgroud)
变量p总是如此null.这怎么可能?
这是我正在谈论的打印屏幕:
我也尝试使用即时窗口我得到了这个:
p因为我创建了一个新实例,而它的所有属性都不为null,所以不能为空.我尝试清理项目,重新启动Windows,以管理员身份打开visual studio,没有任何反应.
知道为什么吗?
该应用程序在.net 4.0,visual studio 2017 v15.2(26430.13)上运行.
当我在工作中开发应用程序时,我收到一个错误:
Value cannot be null. Parameter name: input
Run Code Online (Sandbox Code Playgroud)
有很多帖子在谈论这个,所以我读了它们......没有解决方案.
好继续.所以我检查了在数据库模型中是否有任何不可为空的属性试图插入而不是,所有这些属性都可以为空(除了Identity)所以这不是问题.所以我意识到抛出错误的View Model 是从Model类继承的,我想:" 这可能是问题吗? ".所以我不再继承模型并重新开始工作.
请注意,这不是第一次发生这种情况,两周前我遇到了同样的情况而且是因为它.
为什么我从模型类继承?因为它有+10属性,我需要它在视图中显示这些值,但我还需要显示另一个模型类的值,所以我创建了一个视图模型:
class ViewModel: ModelClass{
//ModelClass contains +10 properties
//and the current class contains 7 properties
public ModelClass CastToModelClass()
{
return new ModelClass{ /*stuff...*/ }// casting the current properties values to the ModelClass class
}
}
Run Code Online (Sandbox Code Playgroud)
当我插入新铸造的模型时,我得到错误:
public JsonResult Save(ViewModel model)
{
var modelClass = model.CastToModelClass();
// here there are not empty properties
context.ModelClass.Add(modelClass);
context.SaveChanges();// error …Run Code Online (Sandbox Code Playgroud) 我已阅读与此相关的所有帖子,并且已尝试所有内容,但没有结果。
我使用 Fluent api 将我的模型映射到数据库。但是当我查询时我收到此错误:
Method not found:
'System.Data.Entity.ModelConfiguration.Configuration.DecimalPropertyConfiguration
System.Data.Entity.ModelConfiguration.Configuration.DecimalPropertyConfiguration.HasDatabaseGeneratedOption(System.Nullable`1<System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption>)'.
Run Code Online (Sandbox Code Playgroud)
我的模型看起来像这样:
ToTable("table_name");
HasKey(x => x.CounterId)//this property IS NOT NULLABLE
.Property(x => x.CounterId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
.HasColumnName("dbCounter_Id")
.HasPrecision(10, 0)
.IsRequired();
Property(x => x.HouseId)
.HasColumnName("dbHouseId");
Property(x => x.ApplicationId)
.HasColumnName("dbApplication_id");
Run Code Online (Sandbox Code Playgroud)
由于某种原因.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)给了我这个错误,所以当我退出它时:
HasKey(x => x.CounterId)
.Property(x => x.PageId)
.HasColumnName("dbCounter_Id")
.HasPrecision(10, 0)
.IsRequired();
Run Code Online (Sandbox Code Playgroud)
我没有收到错误,但我很幸运,当我尝试向该表添加记录时,我收到插入身份异常。我既不能添加也不能退出该HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)方法。
重要提示:键CounterId不是 INTEGER 类型,而是 DECIMAL(10,0)。这可能是这里的问题吗?我无法更改列的数据类型,因为生产中的许多应用程序都会受到最坏的影响。
希望我能得到任何帮助。