我在 MySql 服务器上使用来自 MySql 的 Sakila 示例数据库。该图如下所示。
重要的表是store、inventory和film表。该是多到许多表和关系连接表是库存表。
我使用EFCore 2在一个新的 dotnetcore 项目中搭建了这个数据库。我正在尝试获取商店列表及其电影列表。
所述实体定义如下:
店铺
public class Store
{
public Store()
{
Customer = new HashSet<Customer>();
Inventory = new HashSet<Inventory>();
Staff = new HashSet<Staff>();
}
public byte StoreId { get; set; }
public byte ManagerStaffId { get; set; }
public short AddressId { get; set; }
public DateTimeOffset LastUpdate …
Run Code Online (Sandbox Code Playgroud) 我一直在寻找在断开连接的情况下记录实体的更改。
原始问题:我调用DbContext.Update(Entity)
了一个更新的复杂实体,即使没有任何变化,但所有内容都被 ChangeTracker 标记为已更改,并且我的并发RowVersion列计数。
POST 用户没有变化
"userSubPermissions": [],
"fidAdresseNavigation": {
"idAdresse": 1,
"fidPlzOrt": 3,
"strasse": "Gerold Str.",
"hausnr": "45",
"rowVersion": 10,
"isDeleted": 0,
"fidPlzOrtNavigation": {
"idPlzOrt": 3,
"plz": "52062",
"ort": "Aachen",
"rowVersion": 9,
"isDeleted": 0
}
},
"idUser": 35,
"fidAnrede": null,
"fidAdresse": 1,
"fidAspnetuser": "a7ab78be-859f-4735-acd1-f06cd832be7e",
"vorname": "Max",
"nachmname": "Leckermann",
"eMail": "kunde@leasing.de",
"rowVersion": 11,
"isDeleted": 0
Run Code Online (Sandbox Code Playgroud)
POST 返回用户
"userSubPermissions": [],
"fidAdresseNavigation": {
"idAdresse": 1,
"fidPlzOrt": 3,
"strasse": "GeroldPenis Str.",
"hausnr": "45",
"rowVersion": 11,
"isDeleted": 0,
"fidPlzOrtNavigation": …
Run Code Online (Sandbox Code Playgroud) 我试图在我的Controller类中编写一个响应Http GET请求的方法.该应用程序是一个ASP .NET Core 2.0 API.
该方法如下所示:
[HttpGet("GetObjects/{parameter1?}/{parameter2:decimal?}.../{parameter29:bool?}"]
public IActionResult(List<string> parameter1 = null, decimal? parameter2 = null, ..., bool? parameter29 = null)
{
}
Run Code Online (Sandbox Code Playgroud)
当我去添加第30个参数时,我得到了这个异常:OverflowException:对于Decimal,值太大或太小.图片中的更多细节.
我已经尝试添加一个可空的字符串列表,一个可空的bool和一个可空的十进制作为参数.当我交换现有方法的参数时,它们都工作正常.
一旦我构建项目而不是运行/使用它,我就会看到这个错误.我在工作版本和失败版本之间进行的唯一更改是将/ {parameter29:bool?}(或任何其他类型的参数)添加到HttpGet属性路径的末尾.
我试图获取与此对象相关的数据库的所有条目.我检查哪些参数不为空,并相应地过滤条目列表.然后我返回一个过滤列表.