私は以前この質問をしました。しかし、私は答えを得ることができませんでした。私は非常に明確でなかったかもしれません。私はいくつかの詳細を教えてください。LinqがSQLストアドプロシージャによって返された文字列を切り捨てる
私は長い文字列を返すSPを持っています。ここDBMLファイルのコードは、結果が長い文字列ではなく、ときすべてが、大丈夫です
[Function(Name="dbo.spX")]
public ISingleResult<spXResult> spX([Parameter(DbType="VarChar(8000)")] string str)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), str);
return ((ISingleResult<spXResult>)(result.ReturnValue));
}
、ここではspXResultクラス
public partial class spXResult
{
private string _XML_F52E2B61_18A1_11d1_B105_00805F49916B;
public spXResult()
{ }
[Column(Name="[XML_F52E2B61-18A1-11d1-B105-00805F49916B]",
Storage="_XML_F52E2B61_18A1_11d1_B105_00805F49916B",
DbType="NText", UpdateCheck=UpdateCheck.Never)]
public string XML_F52E2B61_18A1_11d1_B105_00805F49916B
{
get
{
return this._XML_F52E2B61_18A1_11d1_B105_00805F49916B;
}
set
{
if ((this._XML_F52E2B61_18A1_11d1_B105_00805F49916B != value))
{
this._XML_F52E2B61_18A1_11d1_B105_00805F49916B = value;
}
}
}
}
と、ここで私のコードは
あるISingleResult<spXResult> result = ctx.spX("1234");
string returnStr = result.First().XML_F52E2B61_18A1_11d1_B105_00805F49916B;
ですspが非常に長い文字列を返すとすぐに、結果は切り捨てられます。どうして誰かが助けてくれますか?私は見つけることができ
おかげ
あなたは「非常に長い文字列」の長さについてより具体くださいことはできますか?また、どのデータベースサーバーを使用していて、文字列がデータベースで切り捨てられていないことを確認しましたか? –
imはSQLサーバー2005を使用し、データベースサーバーでは切り捨てられません。まあ私は正確な長さを知っていないが、8000文字後になる可能性があります。私はIMultipleResultsを試してみるべきだと思いますか? –
カラム定義がvarchar(8000)で、データが8001文字以上の場合、データベースで切り捨てられています。ここにあるコードも、XMLデータを扱っているようです。 Sql Server 2005には、目的に合ったXMLデータ型があります。 –