使用实体框架将字符串保存到数据库时的语言问题

时间:2013-04-12 11:24:57

标签: c# asp.net entity-framework

我有一个带文本框和按钮的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" />

(Product.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)

2 个答案:

答案 0 :(得分:2)

使用"N"解决此问题..

如果要将类似"ҤїАͻ"的字符串插入数据库

然后你的查询必须像这样

<强>查询:

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

我认为它会解决你的问题

答案 1 :(得分:1)

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