Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的save方法总是给出异常而不保存值_C#_Asp.net Core - Fatal编程技术网

C# 为什么我的save方法总是给出异常而不保存值

C# 为什么我的save方法总是给出异常而不保存值,c#,asp.net-core,C#,Asp.net Core,我的系统上有3个型号 Public class Company {Id,Name}//Already have data Public Class User {Id, Name}//Already have data Public Class Department {Id,Name,CompanyId,UserId,Public Company Companies,Public User Users} 现在我想为我的部门模型创建一个种子数据。 种子数据类中的代码 if(!context.D

我的系统上有3个型号

Public class Company {Id,Name}//Already have data

Public Class User {Id, Name}//Already have data

Public Class Department {Id,Name,CompanyId,UserId,Public Company Companies,Public User Users}
现在我想为我的部门模型创建一个种子数据。 种子数据类中的代码

if(!context.Department.Any()){

try {
var departments = new Department[]{
 new Department{ComapnyId=context.Companies.Single(s => s.Name=="Stackoverflow").Id,
     UserId =context.Users.Single(s => s.Name=="Admin").Id, Name="IT"}
};
  foreach (Department department in departments)
                        {
                            context.Department.Add(department);                         
                        }
                        context.SaveChanges();
}catch (Exception e)
            {
                throw new Exception(e.Message);
            }//End Try and Catch
}//End If
现在,我的问题保存方法总是删除一个异常

我做错了什么

My Stacktrace:
位于System.Data.SqlClient.SqlConnection.OnError(SqlException异常、布尔断开连接、操作
1 wrapCloseInAction) 位于System.Data.SqlClient.SqlInternalConnection.OneError(SqlException异常、布尔断开连接、操作
1 wrapCloseInAction)
位于System.Data.SqlClient.TdsParser.ThroweException和Warning(TdsParserStateObject StateObjectStateObj、布尔调用方连接锁、布尔异步关闭)
位于System.Data.SqlClient.TdsParser.TryRun(RunBehavior RunBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj、Boolean和dataReady)
位于System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()处
在System.Data.SqlClient.SqlDataReader.get_MetaData()处
位于System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds、RunBehavior、String ResetOptions String)
位于System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、Boolean async、Int32超时、任务和任务、Boolean asyncWrite、SqlDataReader ds)
位于System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、TaskCompletionSource
1 completion、Int32超时、任务和任务、Boolean asyncWrite、字符串方法) 位于System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior) 位于System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior) 在System.Data.Common.DbCommand.ExecuteReader()中
在Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection连接、DbCommandMethod executeMethod、iRelationalDictionary
2参数值)

位于Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader(IRelationalConnection连接,iRelationalDocumentary
2个参数值)
在Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection)
---内部异常堆栈跟踪结束---`

您需要正确配置模型之间的关系,如下所示

  • 每个用户将有一个公司和一个部门
  • 每个部门将有一个公司和许多用户
  • 每个公司都有许多用户和许多部门
因此,您的数据模型必须如下所示:

公共类用户{
公共int Id{get;set;}
公共字符串名称{get;set;}
public int CompanyId{get;set;}
上市公司{get;set;}
public int DepartmentId{get;set;}
公共部门部门{get;set;}
}
公共课系{
公共int Id{get;set;}
公共字符串名称{get;set;}
public int CompanyId{get;set;}
上市公司{get;set;}
公共ICollection用户{get;set;}
}
公营公司{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共ICollection部门{get;set;}
公共ICollection用户{get;set;}
}

稍后我们可以看到您面临的错误。

您需要正确配置模型之间的关系,如下所示

  • 每个用户将有一个公司和一个部门
  • 每个部门将有一个公司和许多用户
  • 每个公司都有许多用户和许多部门
因此,您的数据模型必须如下所示:

公共类用户{
公共int Id{get;set;}
公共字符串名称{get;set;}
public int CompanyId{get;set;}
上市公司{get;set;}
public int DepartmentId{get;set;}
公共部门部门{get;set;}
}
公共课系{
公共int Id{get;set;}
公共字符串名称{get;set;}
public int CompanyId{get;set;}
上市公司{get;set;}
公共ICollection用户{get;set;}
}
公营公司{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共ICollection部门{get;set;}
公共ICollection用户{get;set;}
}

稍后,我们可以看到您面临的错误。

您遇到了什么异常?Microsoft.EntityFrameworkCore.DbUpdateException中的Microsoft.EntityFrameworkCore.Dlan在更新条目时出错。有关详细信息,请参阅内部异常。出现异常是有原因的,您需要花几秒钟或两秒钟的时间阅读类型和消息。如果异常的消息状态为
请参阅内部异常以了解详细信息
,那么您应该这样做……您需要阅读异常的消息。在这种情况下,堆栈跟踪不是很有趣。您会遇到什么异常?Microsoft.EntityFrameworkCore.dllAn中的Microsoft.EntityFrameworkCore.DbUpdateException在更新条目时出错。有关详细信息,请参阅内部异常。出现异常是有原因的,您需要花几秒钟或两秒钟的时间阅读类型和消息。如果异常的消息状态为
请参阅内部异常以了解详细信息
,那么您应该这样做……您需要阅读异常的消息。在这种情况下,堆栈跟踪没有那么有趣。问题我只想在表User上存储名称,在表company上只存储公司名称,然后在我的Department表上我将userto company链接到company并给出部门名称问题我只想在表User上存储名称,在表company上只存储公司名称,然后在我的Department表上部门表I将用户链接到公司并给出部门名称