1

C#のFluent Nhibernateに奇妙な問題がありました。 エンティティ、マップ、およびリポジトリが表示されます。問題は、私がdbからエンティティを取得しようとするときです。 CODE_BまたはCODE_Cのみを使用すると、「エンティティを読み込めませんでした」というクエリが失敗しますが、CODE_BまたはCODE_Cの前にCODE_Aを使用するとすべて正常に動作します。 削除した場合:Nhibernate C#で流暢、datetimeでエンティティのクエリを実行できませんでした

Map(x => x.MODI_DAT); 
Map(x => x.MODI_ORA); 

すべて正常です。
私はこれらのフィールドをstring、datetimeと一緒に使用しようとしましたが、customSqlTypeを "datetime"に強制しましたが、誰も働いていませんでした。 なぜ私はテーブルからすべてのエンティティを取得するidのクエリが動作しているが、私はすべてのリストの前に私はエラーが表示されない場合は理解していない。

もう1つ奇妙なことは、エラーが出たときに例外が表示され、オブジェクト1のクエリが表示されます。私は手動でdbのクエリを試す場合、私は結果オブジェクトを正しく取得します。

リポジトリ:私のメインの内部

namespace WebApplication.Providers 
{ 
    public class TTW_SA_DETRepository 
    { 

     public TTW_SA_DET get() { 
      //var all = session.QueryOver<TTW_SA_DET>().List(); CODE_A 
      //var one = session.Get<TTW_SA_DET>(new TTW_SA_DET { 
CODI_SOC = "$$$", SAD_NOME_FORM = "ANAG_AZIONI", SAD_ORDE_COL = 0 }); CODE_B 
      var one = session.QueryOver<TTW_SA_DET>() 
       .Where(x => x.CODI_SOC == "$$$") 
       .And(x => x.SAD_NOME_FORM == "ANAG_AZIONI") 
       .And(x => x.SAD_ORDE_COL == 0) 
       .SingleOrDefault<TTW_SA_DET>(); // CODE_C 
      return one; 
     } 



     protected NHibernate.ISessionFactory sessionFactory; 
     protected NHibernate.ISession session; 


     protected NHibernate.ISession openSession() 
     { 
       sessionFactory =   
    MicrosoftSQLConfNhibernate.CreateSessionFactory(); 
       session = sessionFactory.OpenSession(); 

       return session; 
     } 

     public TTW_SA_DETRepository() 
     { 
      openSession(); 
     } 

    } 

(Startup.cs):

var rep = new TTW_SA_DETRepository(); 
rep.get(); 

エンティティ:

namespace WebApplication.Models 
{ 
    public class TTW_SA_DET 
    { 
     virtual public string CODI_SOC { get; set; } 
     virtual public string SAD_NOME_FORM { get; set; } 
     virtual public int SAD_ORDE_COL { get; set; } 
     virtual public DateTime MODI_DAT { get; set; } 
     virtual public DateTime MODI_ORA { get; set; } 

     public override bool Equals(object obj) 
     { 
      var val = obj as TTW_SA_DET; 
      return val != null && 
        CODI_SOC == val.CODI_SOC && 
        SAD_NOME_FORM == val.SAD_NOME_FORM && 
        SAD_ORDE_COL == val.SAD_ORDE_COL;     
     } 

     public override int GetHashCode() 
     { 
      var hashCode = 1411657508; 
      hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(CODI_SOC); 
      hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(SAD_NOME_FORM); 
      hashCode = hashCode * -1521134295 + EqualityComparer<int>.Default.GetHashCode(SAD_ORDE_COL); 
      return hashCode; 
     } 

    } 
} 

EntityMap:

namespace WebApplication.Models 
{ 
    public class TTW_SA_DETMap : ClassMap<TTW_SA_DET> 
    { 
     public TTW_SA_DETMap() 
     { 
      Table("TTW_SA_DET"); 
      CompositeId() 
       .KeyProperty(x => x.CODI_SOC) 
       .KeyProperty(x => x.SAD_NOME_FORM) 
       .KeyProperty(x => x.SAD_ORDE_COL); 
      Map(x => x.MODI_DAT);//.CustomSqlType("datetime"); 
      Map(x => x.MODI_ORA);//.CustomSqlType("datetime"); 
     } 

    } 
} 

DBの設定:

namespace WebApplication 
{ 
    public class MicrosoftSQLConfNhibernate 
    { 


     public static ISessionFactory CreateSessionFactory() 
     { 
      return Fluently.Configure() 
     .Database(MsSqlConfiguration.MsSql2012.ConnectionString(c => c 
       .Server("myCORRECTdata") 
       .Database("myCORRECTdata") 
       .Username("myCORRECTdata") 
       .Password("myCORRECTdata") 
       ).ShowSql() 
      ) 
       .Mappings(m => 
       m.FluentMappings.AddFromAssemblyOf<Startup>()) 
       .BuildSessionFactory(); 
     } 

    } 
} 

最後これはMSSQL 2014上の表である:

CREATE TABLE EDILWEB_MONET.dbo.TTW_SA_DET (
    CODI_SOC varchar(3) NOT NULL, 
    SAD_NOME_FORM varchar(50) NOT NULL, 
    SAD_ORDE_COL int NOT NULL, 
    MODI_DAT datetime, 
    MODI_ORA datetime, 
    CONSTRAINT PK_SY_SA_DET PRIMARY KEY (CODI_SOC,SAD_NOME_FORM,SAD_ORDE_COL) 
) go 

答えて

0

おそらくコードが機能している別のゲートウェイと、ネットワークの問題です。ファイアウォールのどこかに問題があるか、MTUの設定が悪いかもしれません。

関連する問題