【问题标题】:How to define the Bit datatype in a method parameter in C#?如何在 C# 的方法参数中定义 Bit 数据类型?
【发布时间】:2018-07-05 19:46:05
【问题描述】:

我在数据库中有一个 SQL 表,其中有一列具有 Bit 数据类型。我试图在我的 C# 应用程序中定义一个方法,该方法从表中获取两列并将它们用作参数。

这里是代码

public void Edit_NAA_ApplicationsFirm(int ApplicationId, string UniversityOffer, bit Firm)
    {
        //This line declares a variable in which we store the actual values from NAA_Applications based on the associating ID
        NAA_Applications AppFirm = Get_Applicant_Application(ApplicationId);

        //Here we tell the application that the values edited are equal to the values within the table
        AppFirm.Firm = Firm;

        //Any of these changes are then saved.
        _context.SaveChanges();

    }

唯一的问题是程序不断尝试将位转换为 BitConverter。当我将其更改为 bit 时,将其作为数据类型接受时会出现问题。

值得注意的是,我在 ASP.Net 框架解决方案中构建应用程序。

谁能告诉我我做错了什么?我只是指的数据类型错误吗?

【问题讨论】:

  • 您使用的是哪个 dbms? (ANSI SQL 没有位数据类型。)
  • 我不确定管理服务是什么,我们通过 Visual Studio 中的服务器连接来连接它
  • 如果使用sql server,bit可以映射到C# bool。
  • public void Edit_NAA_ApplicationsFirm(int ApplicationId, string UniversityOffer, bool Firm)

标签: c# sql asp.net sql-server tsql


【解决方案1】:

c# 中位的正确数据类型是布尔值。所以

public void Edit_NAA_ApplicationsFirm(int ApplicationId, string UniversityOffer, bool Firm)

【讨论】:

    【解决方案2】:

    如果我理解正确,请尝试使用 bool Firm

    在c#中,将数据库中的值1转换为“true”,将代码中的“true”转换为数据库中的1

    【讨论】:

      【解决方案3】:

      看起来您正在使用实体框架。

      它将使用 .NET boolean 来表示 T-SQL bit。对于任何其他数据访问方法,这也是一种明智的做法。布尔值true 将在位字段中转换为1false 将转换为0

      事实上,甚至不止一次地证明这是正确的 .NET CLR 类型。请参阅https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/linq/sql-clr-type-mappinghttps://msdn.microsoft.com/en-us/library/cc716729(v=vs.100).aspx 以及可能的其他人。

      所以在你的情况下bool Firm 是合适的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-30
        • 2023-01-19
        相关资源
        最近更新 更多