实体框架 MySQL tinyint(1) System.Boolean.Parse FormatException

2023-11-22

我在用着实体框架6在我的 C# 中模型优先项目使用了MySQL 数据库。一切都很好,我可以毫无问题地生成数据库。

然后我修改了我的.edmx使用设计器创建文件,这里开始解决我遇到的问题。

  • 首先设计师没有更新CSDL内容C-S映射内容.edmx 文件的各个部分不再存在。 于是我自己更新了内容,终于可以编译项目了。

这是.edmx文件现在的样子以及它在设计器中的样子:

EDMX 文件:http://pastebin.com/Xer9UyNR

这是设计器视图的链接:https://i.stack.imgur.com/Vcv9W.png

  • 其次(也是最重要的一个),当 EF 尝试从我的数据库获取tinyint并将其类型更改为布尔值时,我收到 FormatException。


    à ArmoireOutils.App.OnNavigateMessageHandler(OnNavigateMessage message) dans c:\Users\JB\Desktop\CodingFrance\ArmoireOutils\ArmoireOutils\App.xaml.cs:line 101System.FormatException: String was not recognized as a valid Boolean..
    à System.Boolean.Parse(String value)
    à System.String.System.IConvertible.ToBoolean(IFormatProvider provider)
    à System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
    à MySql.Data.Entity.EFMySqlDataReader.ChangeType(Object sourceValue, Type targetType)
    à MySql.Data.Entity.EFMySqlDataReader.GetValue(Int32 ordinal)
    à System.Data.Entity.Core.Common.Internal.Materialization.Shaper.ErrorHandlingValueReader`1.GetUntypedValueDefault(DbDataReader reader, Int32 ordinal)
    à System.Data.Entity.Core.Common.Internal.Materialization.Shaper.ErrorHandlingValueReader`1.GetValue(DbDataReader reader, Int32 ordinal)
    à System.Data.Entity.Core.Common.Internal.Materialization.Shaper.GetPropertyValueWithErrorHandling[TProperty](Int32 ordinal, String propertyName, String typeName)
    à lambda_method(Closure , Shaper )
    à System.Data.Entity.Core.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly[TEntity](Func`2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet)
    à lambda_method(Closure , Shaper )
    à System.Data.Entity.Core.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper)
    à System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.RowNestedResultEnumerator.MaterializeRow()
    à System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.RowNestedResultEnumerator.MoveNext()
    à System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.ObjectQueryNestedEnumerator.TryReadToNextElement()
    à System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.ObjectQueryNestedEnumerator.ReadElement()
    à System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.ObjectQueryNestedEnumerator.MoveNext()
    à System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
    à System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)
    à System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__2[TResult](IEnumerable`1 sequence)
    à System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot)
    à System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[TResult](Expression expression)
    à System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](Expression expression)
    à System.Linq.Queryable.SingleOrDefault[TSource](IQueryable`1 source)
    à ArmoireOutils.Services.DataService.GetCupboardByGuid(String guid) dans c:\Users\JB\Desktop\CodingFrance\ArmoireOutils\ArmoireOutils\Services\DataService.cs:line 202
  

这是我的通过GUID获取Cupboard method:

public Cupboard GetCupboardByGuid(String guid)
    {
        using (var context = new ArmoireOutilsEntities())
        {
            var cupboard = (from a in context.Cupboards
                where a.GUID.Equals(guid)
                select a)
                .Include("ResidentTools")
                .Include("Tools")
                .Include("Users") //If I remove this, .SingleOrDefault() works fine.
                .SingleOrDefault(); //Throw FormatException when getting the User.Active value from the database.

            if (cupboard != null)
                cupboard.RefreshLists();

            return cupboard;
        }
    }

这是由 .edmx tt 生成的我的 User 类:

public partial class User
{
    public User()
    {
        this.Tools = new ObservableCollection<Tool>();
        this.Cupboards = new ObservableCollection<Cupboard>();
        this.Active = true;
    }

    public int Id { get; set; }
    public short Type { get; set; }
    public string Firstname { get; set; }
    public string LastName { get; set; }
    public string Login { get; set; }
    public short Gender { get; set; }
    public short LangId { get; set; }
    public string Photo { get; set; }
    public System.DateTime CreationDate { get; set; }
    public Nullable<System.DateTime> ModificationDate { get; set; }
    public Nullable<System.DateTime> LastConnection { get; set; }
    public Nullable<System.DateTime> DisableDate { get; set; }
    public bool Active { get; set; }

    public virtual Lang Lang { get; set; }
    public virtual IList<Tool> Tools { get; set; }
    public virtual IList<Cupboard> Cupboards { get; set; }
}

所以我猜 EF 正在迭代数据库中的所有用户橱柜用户(该表链接了user to a cupboard对于多对多关系)以及设置时Active第一个用户的值,它从数据库中获取 1 作为String首先,然后尝试使用将该字符串解析为布尔值系统.布尔.解析但该方法不支持像“1”这样的数字表示 true(数据库中的字段是微小整数(1)).

那么为什么 EF 无法理解它是一个tinyint,所以他不能在系统.布尔.解析 ?

我试图重新生成整个.edmx来自数据库的文件 => 相同的异常

我试图重新生成整个.edmx从头开始文件 => 相同的异常

我不明白为什么,因为我没有修改 User 模型,所以Active现场已经在那里并且工作得很好。

抱歉发了这么长的帖子,并提前致谢。

此致, 平民


在特定实体上配置数据类型:

modelBuilder.Entity<User>()
                  .Property(p => p.Active)
                  .HasColumnType("bit");

或一般:

modelBuilder.Properties()
            .Where(x => x.PropertyType == typeof(bool))
            .Configure(x => x.HasColumnType("bit"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架 MySQL tinyint(1) System.Boolean.Parse FormatException 的相关文章

  • 有没有一种简单的方法来获取 .NET 为参数化查询生成的“sp_executesql”查询?

    背景 如果我有以下程序 public class Program public static void Main using var connection new SqlConnection Server local Database Te
  • C++ 编译器可以对结构中的元素重新排序吗

    C 编译器 特别是 g 可以对结构体的内部元素重新排序吗 我看到一些奇怪的行为 其中我有一个包含如下内容的结构 Struct SomeStruct long someLong long someLongArray 25 unsigned l
  • 如何在 C++ 中的嵌套词法作用域可访问的作用域中声明静态信息?

    我想声明范围的标识符 该标识符将用于自动填充最内部范围内任何日志记录语句的字段 它们通常会 但并非总是如此 例如 lambda 使用 引入的块 匹配封闭块的 名称 用法看起来像这样 namespace app LOG CONTEXT app
  • 在 std::forward 中它如何接受右值?

    看看斯科特 迈耶的有效的现代 C 第200 201页 建议的简化实施std forward可能是 在其他地方看到了正确的实现 template
  • MySQL max_allowed_pa​​cket 参数有什么问题?

    我需要增加 max allowed pa cket 参数 以适应一些理论上非常大的项目 如果我将此参数设置为 10M 那么与设置为 1M 或 4M 相比 我要支付什么价格 如果有的话 感谢您的任何意见 托马斯 我找到了这个解释 http w
  • 如何使用 Regsvr32 注册 .NET COM DLL?

    我有一个使用 COM DLL 的 VB6 应用程序 该DLL是用C 编写的 在 C 项目属性中 我检查了 Register for COM interop 选项 VB6 应用程序在我的开发机器上运行良好 C 代码完全遵循以下格式 CodeP
  • 可以轻易移动,但不可轻易复制

    是否可以创建类类型 即 普通移动构造 但不是普通复制构造 但仍然可复制构造 普通复制构造 但不是普通移动构造 但仍然可移动构造 可以简单地复制分配 但不能简单地移动分配 但仍然可以移动分配 可以简单地移动分配 但不能简单地复制分配 但仍然可
  • 如何使用默认约束为mysql中的列创建随机数?

    DEFAULT 约束在接受字符串或当前日期值方面没有问题 我需要的是一个约束 每次创建实体时都会创建一个随机的 4 位数字 我尝试了以下代码 但它返回语法错误 ALTER TABLE client number ADD 代码 INT 4 D
  • 需要帮助将 winform 迁移到 net 5

    我正在将 winform 应用程序从 net core 3 1 移植到 net 5 并收到以下错误 严重性代码 说明 项目文件行抑制状态 错误NETSDK1136 目标平台必须设置为Windows 通常 通过在 TargetFramewor
  • OpenCV:处理每一帧

    我想使用 OpenCV 编写一个跨平台应用程序进行视频捕获 在所有示例中 我发现来自相机的帧是使用抓取功能进行处理并等待一段时间 我想处理序列中的每一帧 我想定义自己的回调函数 每次当一个新帧准备好处理时都会执行该函数 例如直播对于 Win
  • Parallel ForEach 的本地初始化如何工作?

    我不确定 Parallel ForEach 中本地 init 函数的使用 如 msdn 文章中所述 http msdn microsoft com en us library dd997393 aspx http msdn microsof
  • 等效

    这是否保证始终为真 std numeric limits
  • 如何从 MongoDB 中的 ChangeStream 过滤对特定字段的更新

    我正在设置一个 ChangeStream 以便在集合中的文档发生更改时通知我 以便我可以将该文档的 LastModified 元素更新插入到事件发生的时间 由于此更新将导致 ChangeStream 上发生新事件 因此我需要过滤掉这些更新以
  • phpMyAdmin - #1932 重新安装后表不存在(正在使用排序规则)

    我正在做我的论文 当我发现我的 XAMPP 服务器有一些错误日志时 所以我决定将我的 XAMPP 重新安装到更新的版本 我从 SO 中的一些线程中得 到了这个想法 我移动了我的mysql gt data文件夹并在我的新安装文件夹中再次恢复它
  • 对嵌套属性使用 XmlAttributeOverrides

    我试图使用 XmlAttributeOverrides 来控制类序列化后哪些类属性出现在 xml 中 它适用于 根 类上的属性 但不适用于嵌套属性 这是一个简单的例子来说明我想要完成的任务 我的类层次结构如下 public class Ma
  • 如何在mysql中设置“performance_schema on”?

    我想转performance schemaON 在 mysql 中收集统计信息 我怎样才能实现这个目标 以下指南是特定于 Linux 的 但应该很容易适用于 Windows 您必须检查 mysql 服务器二进制文件是否已编译为支持它 mys
  • 从资源文件获取 DisplayName [重复]

    这个问题在这里已经有答案了 我在 App GlobalResources 文件夹中有特定于文化的资源文件 现在我需要从此资源文件中读取 DisplayName 属性的值 我在用 Display Name MerchantName Resou
  • 如何设置扬声器声音增强设置

    如何以编程方式设置 Windows 扬声器设置 增强 选项卡 中可用的声音效果 恐怕这是不可能的 参见 Maurits 对他的评论blog http blogs msdn com b matthew van eerde archive 20
  • 将整个单词与特殊字符匹配的正则表达式不起作用? [复制]

    这个问题在这里已经有答案了 我正在经历这个问题C Regex Match 整个单词 https stackoverflow com q 1209049 443568 它说要匹配整个单词使用 b模式 b 这对于匹配没有任何特殊字符的整个单词效
  • 如何获取打印机设备上下文?

    我在 Windows 上尝试使用以下命令打印增强型图元文件 EMF 播放增强元文件 http msdn microsoft com en us library dd162800 28VS 85 29 aspx 我当前正在使用屏幕上窗口的设备

随机推荐

  • 如何为 ember.js 创建自定义适配器?

    我计划使用 ember js 但是我的 REST api 与打包的 REST 适配器并不完全一致 我想 覆盖 find 并能够将我自己的 ajax 放入其中 我不喜欢 ember findAll 在没有分页选项的情况下检索所有文档 因此与其
  • React 模式对话框的内容不可用于使用 mount() 的酶测试

    我有一个带有模式对话框的 React 组件 使用构建reactstrap 但其他人也报告了类似的问题react bootstrap和其他类型的模态组件 Enzyme 无法找到模态中的任何组件 即使它们在实际应用程序中呈现良好 最小的例子 i
  • 提高 R Rayshader 图像的分辨率

    我正在尝试使用 Rayshader 包制作图像 我很高兴能够使用如下代码创建 png 文件 library ggplot2 library rayshader example plot lt ggplot data frame x c 1
  • 如何在没有元类冲突的情况下将泛型类型与 PyQt 子类一起使用?

    我曾尝试过abc ABCMeta使用 sip 包装类型 并且当子类化时它工作得很好abc ABC class QABCMeta wrappertype ABCMeta pass class WidgetBase QWidget metacl
  • AngularJS - 在登录时存储基本身份验证

    我对此感到很头疼 我对 API 的使用还比较陌生 还没有做过任何需要身份验证的事情 我一直坚持向 API 发送 POST 请求 创建内容片段的端点是 entity node 如果我发送以下内容 我可以发送成功的 POST 请求 header
  • 将 dict 转储到 JSON 时保持顺序

    我想将数据库查询的结果序列化为 JSON 每行都有许多列 我添加到一个字典中 这些列按一定顺序排列 但是当我序列化数据时 顺序会发生变化 我尝试使用OrderedDict 但仍然看到同样的问题 如何保持列的顺序 res a i 0 b i
  • :[属性=值]的第n个子级(2n)

    我有一个包含行的列表 每一行li有一个属性data status其值可以是1 5 ul li li li li li li li li li li li li li li li li li li li li li li ul
  • 如何在 ASP.net Core 2 的 appsettings.json 中加密密码?

    我想使用 appsettings json 来存储 主密码 然后 该主密码将用于打开由这个出色的密码存储包生成的私钥 及其后续密码存储 https github com neosmart SecureStore 问题是 我想不出任何方法来加
  • R 中形状文件到光栅的转换?

    我从 worldwildlife org 下载了一个关于世界陆地生态区的形状文件 该文件可以在此处加载 http worldwildlife org publications terrescial ecoregions of the wor
  • 重新编译后 Mex 函数未更新

    我有一个简单的 mex 函数 它从库中调用另一个 C 函数 我编译源代码 mex cxx mymexfunction cpp I some include L some lib lmylib mylib 库是动态的 so 并且自身与其他一些
  • 在列表中移动项目?

    在Python中 如何将项目移动到列表中的确定索引 Use the insert列表方法 l list l insert index item 或者 您可以使用切片表示法 l index index item 如果要将列表中已有的项目移动到
  • Typescript:将函数添加到 moment.js 命名空间

    我正在尝试向 moment js 库添加额外的功能 我想添加一个函数 它本身需要在其主体中调用 moment 但我很难弄清楚这一点 我正在使用最新版本的 Typescript 和 moment js 我试图找到解决方案 但一无所获 这个解决
  • wxPython:如何找出哪个小部件具有焦点?

    我如何找出我的中的哪个小部件wx Frame有重点吗 您应该能够使用 Window 类的静态FindFocus 方法返回具有焦点的对象 api http www wxpython org docs api wx Window class h
  • 为什么C++中同时存在结构体和类?

    据我们所知 struct and class在语言中的许多地方可以互换 令人困惑的是 关键字本身不一定对应于标准中使用的语言 例如 在标准草案 N4567 class 10 中 A POD struct109 is a non union
  • 如何使 JPA OneToOne 关系变得懒惰

    在我们正在开发的这个应用程序中 我们注意到视图特别慢 我分析了视图并注意到 hibernate 执行了一个查询 即使数据库中只有两个对象需要获取 该查询也花费了 10 秒 全部OneToMany and ManyToMany关系很懒惰 所以
  • MSSQL JDBC 驱动程序在首次连接时不会连接到镜像故障转移伙伴

    我使用 C3P0 和 MS SQL JDBC 4 驱动程序在数据库消失时自动故障转移到新的数据库镜像 如果它首先连接到主数据库 则故障转移将起作用并无缝切换到镜像数据库 但是 如果应用程序启动时主体数据库已关闭 而镜像数据库可连接 使用 M
  • 从匹配正则表达式的结果中删除最后一个字符

    我正在尝试在 jmeter 测试中提取 html 的一部分 我需要从 a 中提取一部分
  • 如何修复用户控件中的闪烁

    在我的应用程序中 我不断地从一个控件移动到另一个控件 我已经创建了没有 用户控件 但在导航过程中我的控件会闪烁 更新需要 1 或 2 秒 我尝试设置这个 SetStyle ControlStyles OptimizedDoubleBuffe
  • 尝试通过 ACTION_OPEN_DOCUMENT 对自定义 DocumentsProvider 采用 PersistableUriPermission() 失败

    我正在尝试写一个自定义DocumentsProvider允许其他应用对其提供的 Uris 获取持久权限 我有一个DocumentsProvider我在我的声明中声明AndroidManufest xml如下
  • 实体框架 MySQL tinyint(1) System.Boolean.Parse FormatException

    我在用着实体框架6在我的 C 中模型优先项目使用了MySQL 数据库 一切都很好 我可以毫无问题地生成数据库 然后我修改了我的 edmx使用设计器创建文件 这里开始解决我遇到的问题 首先设计师没有更新CSDL内容和C S映射内容 edmx