我试图从一个包含一些韩文文本的数据库中查询数据。这同样适用于其他没有任何韩语信息的数据库。我应该设置一些文化信息吗?我找到的数据库排序规则是
韩国语_Wansung_Unicode_CI_AS
using (DBModel data = new DBModel())
{
var SqlCommand = "ProcedureName @LastUpdateDate, @LastUpdateTS";
var SqlParams = new SqlParameter[]
{
new SqlParameter { ParameterName = "@LastUpdateDate", Value =lastDatetime, Direction = System.Data.ParameterDirection.Input },
new SqlParameter { ParameterName = "@LastUpdateTS", Value =lastTS, Direction = System.Data.ParameterDirection.Input }
};
return data.Database.SqlQuery<BP>(SqlCommand, SqlParams).ToList();
}
这个
正在投掷
CultureNotFoundException异常
不支持区域性。
参数名称:区域性
66578(0x10412)是无效的区域性标识符。
at System.Globalization.CultureInfo.GetCultureInfo(Int32 culture)
at System.Globalization.CompareInfo.GetCompareInfo(Int32 culture)
at System.Data.ProviderBase.FieldNameLookup.LinearIndexOf(String fieldName, CompareOptions compareOptions)
at System.Data.ProviderBase.FieldNameLookup.IndexOf(String fieldName)
at System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName)
at System.Data.SqlClient.SqlDataReader.GetOrdinal(String name)
at System.Data.Entity.Core.Query.InternalTrees.ColumnMapFactory.TryGetColumnOrdinalFromReader(DbDataReader storeDataReader, String columnName, Int32& ordinal)
at System.Data.Entity.Core.Query.InternalTrees.ColumnMapFactory.CreateColumnMapFromReaderAndClrType(DbDataReader reader, Type type, MetadataWorkspace workspace)
at System.Data.Entity.Core.Objects.ObjectContext.InternalTranslate[TElement](DbDataReader reader, String entitySetName, MergeOption mergeOption, Boolean streaming, EntitySet& entitySet, TypeUsage& edmType)
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)
at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()
at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)
at System.Data.Entity.Internal.InternalContext.<>c__DisplayClass14`1.<ExecuteSqlQuery>b__13()
at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
我也尝试了同样的方法,用普通的老方法将数据检索到一个datatable,不知怎么的,它工作了。那么在EF中需要设置什么呢?
var SqlCommand = "exec ProcedureName '2018-11-11 16:30:00', 163000";
string constring = System.Configuration.ConfigurationManager.ConnectionStrings["Connection"].ToString();
SqlConnection con = new System.Data.SqlClient.SqlConnection(constring);
SqlCommand cmd = new SqlCommand(SqlCommand, con);
cmd.CommandType = System.Data.CommandType.Text;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);