我正在試用Envers。我的工作沒問題,除了當它爲我的審計實體生成審計表時,它使所有的varchar列長度爲1,而不是基表中相應列的長度。Envers生成所有變量長度爲1的審計表模式1
像這樣:
Object: dbo.COMPANY_ADDRESS_TB
Column | Type
-----------------------------
ID | int
COMPANY_ID | int
ADDRESS_SEQ_NUM | int
TYPE | varchar(40)
ATTN | varchar(40)
STREET1 | varchar(60)
STREET2 | varchar(60)
STREET3 | varchar(60)
CITY | varchar(40)
STATE | varchar(25)
ZIP | varchar(18)
COUNTRY | varchar(25)
TIMESTAMP | binary(8)
ACTIVE | int
然後
Object: dbo.COMPANY_ADDRESS_TB_AUD
Column | Type
------------------------------
ID | int
REV | int
REVTYPE | tinyint
REVEND | int
ADDRESS_SEQ_NUM | int
addressSeqNum_MOD | bit
TYPE | varchar(1)
addressType_MOD | bit
ATTN | varchar(1)
attn_MOD | bit
STREET1 | varchar(1)
street1_MOD | bit
STREET2 | varchar(1)
street2_MOD | bit
STREET3 | varchar(1)
street3_MOD | bit
CITY | varchar(1)
city_MOD | bit
STATE | varchar(1)
state_MOD | bit
ZIP | varchar(1)
zip_MOD | bit
COUNTRY | varchar(1)
country_MOD | bit
ACTIVE | int
active_MOD | bit
我當然可以手工修改的長度,但如果我開始審計了很多實體,可以同時獲得乏味和無差錯俯臥。下面是設置它的代碼:
var properties = new Dictionary<string, string>();
properties[NHibernate.Cfg.Environment.Dialect] = "NHibernate.Dialect.MsSql2008Dialect";
properties[NHibernate.Cfg.Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver";
properties[NHibernate.Cfg.Environment.Hbm2ddlAuto] = "update";
properties[NHibernate.Cfg.Environment.FormatSql] = "true";
properties[NHibernate.Cfg.Environment.ShowSql] = "true";
properties[NHibernate.Cfg.Environment.ConnectionString] = "Data Source=localhost;Initial Catalog=OU_KASH;Integrated Security=True;Asynchronous Processing=true";
var cfg = new Configuration();
cfg.Configure()
.SetProperties(properties)
.AddAssembly(typeof(AliasTb).Assembly.FullName)
;
cfg.SetEnversProperty(ConfigurationKey.StoreDataAtDelete, true);
cfg.SetEnversProperty(ConfigurationKey.AuditStrategy, typeof(NHibernate.Envers.Strategy.ValidityAuditStrategy));
cfg.SetEnversProperty(ConfigurationKey.TrackEntitiesChangedInRevision, true);
cfg.SetEnversProperty(ConfigurationKey.GlobalWithModifiedFlag, true);
cfg.IntegrateWithEnvers(new AttributeConfiguration());
任何想法我可能會做錯什麼?
謝謝。我會按照你的建議去做,但我不熟悉你的後續建議:我如何「通過失敗的測試創建請求」? – Michael