我有一个问题,当我尝试向数据库中插入日语单词时。它插入了它们,但是当我检查单词时,它看起来像这样:“ ??????”
因此,我在stackoverflow中进行了探索,并尝试了许多解决方案,但失败了,但我仍然遇到相同的问题。如果有人可以帮助,这是我的代码:
这是我在文本框中输入的词:
ケンガンアシュラ
数据库将其显示为:
????????????
型号:
[Display(Name = "Alternative Name")]
[StringLength(200)]
public string Alternative_Name { get; set; }
在SQL Server中,其数据类型为
nvarchar(200)
这是我的观点:
<div class="form-group">
<h4>@Html.LabelFor(model => model.Alternative_Name, new { @class = "control-label col-md-3" })</h4>
<div class="col-md-6">
@Html.EditorFor(model => model.Alternative_Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Alternative_Name, "", new { @class = "text-danger" })
</div>
</div>
我尝试使用迁移对其进行更新,并将Unicode更改为true:
AlterColumn("dbo.Post", "Alternative_Name", c => c.String(maxLength: 200, unicode: true));
但是没有任何效果,数据库一直将其显示为?????
。
更新:就我而言,该解决方案仅在模型构建器或模型类中进行,该解释器解释了Unicode的btw表和属性之间的关系,因此我将其更改为true并解决了: >
modelBuilder.Entity<Post>()
.Property(e => e.Alternative_Name)
.IsUnicode(true);
答案 0 :(得分:0)
.Net中的字符串默认为unicode,应将日语作为NVarchar传递给数据库
在模型上使用数据注释来告诉.net使用Column(TypeName =“ NVarchar”)]是什么类型
Column(TypeName ="NVarchar")]
[Display(Name = "Alternative Name")]
[StringLength(200)]
public string Alternative_Name { get; set; }
答案 1 :(得分:0)
在SQL Server数据库中,您应该位于要在其中插入数据的列上,将类型设置为NVARCHAR(3000)。
答案 2 :(得分:-1)
该列应位于nvarchar中
public static void CollectionRefresh<T>(this ObservableCollection<T> collection, List<T> items)
{
//Method Content
PropertyInfo[] properties = typeof(T).GetProperties();
foreach(PropertyInfo property in properties)
{
if (property.PropertyType.IsGenericType && typeof(ObservableCollection<>).IsAssignableFrom(property.PropertyType.GetGenericTypeDefinition()))
{
MethodInfo refreshMethod = property.PropertyType.GetMethod("CollectionRefresh");
var instanceT1 = Expression.Parameter(typeof(T), "otherT1");
var instanceT2 = Expression.Parameter(typeof(T), "otherT2");
var prop1 = Expression.Call(instanceT1, property.GetMethod);
var prop2 = Expression.Call(instanceT2, property.GetMethod);
var collection1 = Expression.Convert(prop1, property.PropertyType);
var collection2 = Expression.Convert(prop2, property.PropertyType);
var refresh = Expression.Call(collection1, refreshMethod, collection2);
var lambda = Expression.Lambda<Action<T, T>>(refresh, instanceT1, instanceT2);
Action<T, T> func = lambda.Compile();
func(oldCollection, newList);
}
}
//Method Content
}