public static IEnumerable<PortalList> GetAll()
{
Database db = DatabaseFactory.CreateDatabase();
DbCommand objComm = db.GetStoredProcCommand("package
name.procedurename", new object[1]);
var result = new List<PortalList>();
using (IDataReader rdr = db.ExecuteReader(objComm))
{
while (rdr.Read())
{
result.Add(Construct(rdr));
}
}
return result;
}
で 'System.AccessViolationException' をスローし、私の店の手順は、私はこのgetstoredproccommand( "PROCEDURENAME"、新しいオブジェクトは、[1])Microsoft.Practices.EnterpriseLibrary.Data.dll
PROCEDURE PRC_PROCEDURE (resultset_out OUT TYPES.cursorType)
AS
BEGIN
OPEN resultset_out FOR SELECT * FROM PORTALLISTS;
END PRC_PORTALLISTS_GETALL;
のようなものですこの行でエラーを持つDbCommand objComm = db.GetStoredProcCommand("package name.procedurename", new object[1]);
私がしなければ
この
DbCommand objComm = db.GetStoredProcCommand("package name.procedurename");
エラーが消えたが、その後、IA同じ行に同じエラー[Exception thrown: 'System.AccessViolationException' in Microsoft.Practices.EnterpriseLibrary.Data.dll]
があり、(IDataReader rdr = db.ExecuteReader(objComm))
を使用しています。私はdot.netフレームワーク4を使用しており、Microsoft.Practices.EnterpriseLibrary.Data.dllのバージョンは5.0.0.0です。皆さんは私を助けてくれるのですか?
とportallistservices.csでは、私はあなたがアウトのparamとしてresultset_out
を持っているこの
public static IEnumerable<PortalList> GetAll()
{
return GetAll(true);
}
private static IEnumerable<PortalList> GetAll(bool forceDataReload)
{
const string cacheKey = "PortalListService_GetAll";
IEnumerable<PortalList> result = null;
if (!forceDataReload)
result = GetFromCache(cacheKey);
if (result == null)
{
result = PortalListRepository.GetAll();
AddToCache(cacheKey, result);
}
return result;
}
の下にあなたのparamsを渡すことができますあなたのコマンド – programtreasures
のobject [1] 'にはわかりません。私は文字列Listtypeと同じメソッドを持っています。そのメソッドのコードは次のようになりますpublic static List GetAll(string listType){Database db = DatabaseFactory.CreateDatabase(); DbCommand objComm = db.GetStoredProcCommand( "package name.procedurename"、新しいオブジェクト[1]、listType); var result = new List (); (IDataReader rdr = db.ExecuteReader(objComm)) while(rdr.Read()) { result.Add(Construct(rdr)); } } リターン結果; } –
public static List GetAll(string listType) { データベースdb = DatabaseFactory.CreateDatabase(); DbCommand objComm = db.GetStoredProcCommand( "package name.procedurename"、新しいオブジェクト[1]、listType); var result = new List (); 使用(のIDataReaderのRDR = db.ExecuteReader(objComm)) {一方(rdr.Read()){ result.Add(構築物(RDR))。 } } リターン結果; }このコードは正常に動作しています。 –