- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用 Visual Studio 在 ASP.NET MVC 项目中处理本地数据库。
我在修改数据库时遇到问题。当我调用 SaveChanges()
时,我总是会收到此错误:
The value cannot be null Parameter Name: Source
这是我如何修改数据库和错误日志/StackTrace 的示例。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult CreateMedico(Medico medicoToCreate)
{
List<Medico> dedo = data.Medico.ToList();
if (ModelState.IsValid)
{
using (MedsEntities data = new MedsEntities())
{
medicoToCreate.Id = dedo.Count() + 1;
data.Medico.Add(medicoToCreate);
System.Diagnostics.Debug.WriteLine("RECURSO :" + medicoToCreate.RECURSO_MEDICO);
System.Diagnostics.Debug.WriteLine("NOMBRE: " + medicoToCreate.NOMBRE);
System.Diagnostics.Debug.WriteLine("TIPO: " + medicoToCreate.TIPO);
// and so on with all properties.....
System.Diagnostics.Debug.WriteLine("MEDICO A GRABAR:" + medicoToCreate.NOMBRE);
if (medicoToCreate == null)
{
System.Diagnostics.Debug.WriteLine("MEDICOTOCREATE, IS NULL");
}
else {
System.Diagnostics.Debug.WriteLine("MEDICOTOCREATE, IS NOT NULL");
}
data.SaveChanges();
return RedirectToAction("MedicosList");
}
}
return RedirectToAction("MedicosList");
}
堆栈跟踪:
en System.Data.Entity.Internal.InternalContext.SaveChanges()
en System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
en System.Data.Entity.DbContext.SaveChanges()
en FINAL.Controllers.HomeController.CreateMedico(Medico medicoToCreate) en d:\IDEX8544 KARLO\Documents\Visual Studio 2012\Projects\FINAL\FINAL\Controllers\HomeController.cs:línea 70
en lambda_method(Closure , ControllerBase , Object[] )
en System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
en System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
en System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
en System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41()
en System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)
en System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
en System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
en System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33()
en System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49(
连接字符串(感谢 Oleg):
<connectionStrings>
<add name="MedsEntities" connectionString="metadata=res://*/Models.ModelMeds.csdl|res://*/Models.ModelMeds.ssdl|res://*/Models.ModelMeds.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="data source=|DataDirectory|\DB.sdf"" providerName="System.Data.EntityClient" />
<add name="HospitalEntities" connectionString="metadata=res://*/Models.ModelHosp.csdl|res://*/Models.ModelHosp.ssdl|res://*/Models.ModelHosp.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="data source=|DataDirectory|\DB.sdf"" providerName="System.Data.EntityClient" />
<add name="LabsEntities" connectionString="metadata=res://*/Models.ModelLabs.csdl|res://*/Models.ModelLabs.ssdl|res://*/Models.ModelLabs.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="data source=|DataDirectory|\DB.sdf"" providerName="System.Data.EntityClient" />
<add name="FarmaciasEntities" connectionString="metadata=res://*/Models.ModelFarms.csdl|res://*/Models.ModelFarms.ssdl|res://*/Models.ModelFarms.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="data source=|DataDirectory|\DB.sdf"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
医学模型:
namespace FINAL.Models
{
using System;
using System.Collections.Generic;
public partial class Medico
{
public string RECURSO_MEDICO { get; set; }
public string NOMBRE { get; set; }
public string TIPO { get; set; }
public string TIPO2 { get; set; }
public string TIPO3 { get; set; }
public string CELULAR { get; set; }
public string EMAIL { get; set; }
public string TEL1 { get; set; }
public string TEL2 { get; set; }
public string EXT { get; set; }
public string HOSPITAL { get; set; }
public string DIRECCION { get; set; }
public string LAT { get; set; }
public string LON { get; set; }
public string C33DIGITOS { get; set; }
[Key]
public int Id { get; set; }
}
}
数据库模型:
namespace FINAL.Models
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class MedsEntities : DbContext
{
public MedsEntities()
: base("name=MedsEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<Medico> Medico { get; set; }
}
}
最佳答案
您收到此异常是因为您的某些 Model
属性具有 null
值。但是在检查这个之前我建议你在你的模型中创建一个 key
列并且它不应该是 Nullable
。当您为 model
添加新的 object
时,key
列的值应在调用 SaveChanges
之前设置。
你的关键列应该是这样的
[Key]
public int Id { get; set; }
如果您不想在添加新的object
时手动设置此key
列的值,您可以将其设为标识列,这样它的值将自动插入为此,您必须将 [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
添加到您的 key
列。
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
并确保当您添加一个新的对象
时,您的所有属性都具有该值,否则您将得到相同的异常。
关于c# - SaveChanges 不适用于我的所有项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30792765/
我一直想知道的一个问题是,我应该显式调用 context.SaveChanges() 还是让它在 Dispose() 下。 方法 1:自动保存 public virtual void Disp
我正在使用EF5和“数据库优先”方法在WPF中编写第一个MVVM应用程序。 我在MVVM中的模型是EF5为我生成的(我确实需要自定义T4模板以包括INotifyPropertyChanged)。 一切
我使用 Visual Studio 在 ASP.NET MVC 项目中处理本地数据库。 我在修改数据库时遇到问题。当我调用 SaveChanges() 时,我总是会收到此错误: The value c
我正在使用 Entity Framework 同时插入对象,如下所示。 context = new MyContext(); foreach (var x in lstX) { var abc
我在 ObjectSet 中添加数据并在 ObjectContext 上执行了 SaveChanges。但是新数据没有显示在 DataGrid 中! 代码: bsWork.DataSource = P
我正在使用 Oracle 数据库和 ASP.net MVC4 创建一个应用程序。即使在代码中看起来没有问题,调用 SaveChanges()方法导致此处显示的错误: 这张图片显示了内部异常和相关细节
我刚开始使用 Entity Framework ,我能够使用 linq 进行选择操作,但我在插入时遇到了问题。我试过这个示例,看看有什么问题: testEntities te = ne
假设我在 Controller 中调用了这样的东西: using (var context = new SqlContext()) { context.Items.Add(new Item("
我的 Asp.net mvc web 应用程序中有以下 Action 方法:- [HttpPost] [ValidateAntiForgeryToken] public ActionResult Cr
目标框架:netstandard2.0 Entity Framework 核心:2.2.6 我在 OnModelCreating 中有以下代码: protected override void OnM
这个问题在这里已经有了答案: DbContext SaveChanges Order of Statement Execution (1 个回答) 7年前关闭。 当上下文包含相关实体和 SaveCha
我有一个使用 Entity Framework 6.1、代码优先创建的 SQL-Azure 数据库。 我的“EmazeEvents”表中的“日期时间”字段是这样创建的: datetime = c.Da
查看人们编写的示例,我发现很多人使用 SaveChanges 而不是使用 SaveChangesWithRetries。我认为 SaveChangesWithRetries 是最好的选择,那么仅使用
RavenDB 遇到一个奇怪的问题 public ActionResult Save(RandomModel model) { //Do some stuff, validate model etc.
有没有办法保存单个跟踪对象的更改,而不是 ObjectStateManager 中的所有对象,我的意思是: ObjectContext.SaveChanges(Contact) 最佳答案 也许您可以创
查看人们编写的示例,我发现很多人使用 SaveChanges 而不是使用 SaveChangesWithRetries。我认为 SaveChangesWithRetries 是最好的选择,那么仅使用
我正在尝试编写一个生成多张发票的方法。这是一所大学,其中客户在名为 Enrollments 的类(class)中与导师一起注册。通过这种方法,我试图将导师客户的月费乘以他们的佣金百分比,因为导师从
为什么 DbContext ctx 在每次 SaveChanges() 执行后处理得更快? 第一个样本: var ctx = new DomainContext(); foreach (var ite
我一直在玩 Entity Core 类,例如 DbContext,在尝试保存对象时遇到以下错误: An error occurred while saving entities that do not
场景如下 - 不同的用户通过从网页的下拉列表中选择一个值来进行更改。下拉列表包含在 DataView 中或通过构建表格。如果用户 A 对第 1 行进行了更改,它会更新数据库并在重新绑定(bind)后显
我是一名优秀的程序员,十分优秀!