【问题标题】:Language issue while saving a string into database using entity framework使用实体框架将字符串保存到数据库时出现语言问题
【发布时间】:2013-04-12 11:24:56
【问题描述】:

我有一个带有文本框和按钮的 aspx 页面。 当我单击按钮时,它会将文本框的文本发送到一个函数并使用实体框架将其保存到数据库中。问题是当我在文本框中使用本地字符时,例如 ş, ğ, ı, ö , ü, 这些字符被保存为 s, g, i, o, u。有什么问题?

我的代码 (Product.aspx)

 <asp:TextBox ID="txtTitle" runat="server"></asp:TextBox> 
 <asp:Button ID="btnUpdate" runat="server" Text="Update" OnClick="btnUpdate_Click" />

(产品.aspx.cs)

 protected void btnUpdate_Click(object sender, EventArgs e)
    {
        Product p = new Product ()
        {
            Id = Int32.Parse(Session["ProductId"].ToString()),
            Title = txtTitle.Text
        };
        int productId = ProductManager.UpdateProduct (p);
        if (productId != -1)
        {
            // SUCCESS
        }
        else
        {
             // ERROR
        }
    }


  public static int UpdateProduct(Product product)
    {
        using (var context = new LidyaEntities())
        {
            Product pUpd = context.Product.FirstOrDefault(p => p.Id == product.Id);
            if (pUpd != null)
            {
                pUpd.Title = product.Title;
            }
            return context.SaveChanges();
        }
    }

数据库表(SQL SERVER);

  (Id, int)
  (Title, text)

【问题讨论】:

标签: c# asp.net entity-framework


【解决方案1】:

使用"N" 解决这个问题..

如果你想在数据库中插入类似"ҤїАͻ" 的字符串

那么你的查询一定是这样的

查询:

INSERT INTO TableName VALUES (N'ҤїАͻ')

我想它会解决你的问题

【讨论】:

  • 但我不调用查询。我正在使用实体框架的 add 方法。
  • @MehmetInce: 你用什么数据类型来保存这个词..?
  • 我正在保存为“文本”类型。
  • @MehmetInce:nvarchar 列可以存储任何 Unicode 数据,但 Varchar 仅存储 non Unicode。所以从 Text 更改为 NVarchar 得到 Works..
  • @MehmetInce 我有同样的问题,我的专栏已经是 nVarchar,仍然无法将其他语言保存到数据库。帮忙?
【解决方案2】:

首先检查数据库并确认值已正确存储。如果不是,您将需要更改字符串列的字符类型集。但在您这样做之前,请确认后面代码中的文本值也是正确的。

【讨论】:

  • 在数据库中,我的字符串也存储在没有特殊字符的情况下。例如,它存储为“cag”。不是“çağ”
猜你喜欢
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
相关资源
最近更新 更多