No guarantees, but most likely, yes. -Markus 2009/10/16 Eduard Kruger <[email protected]>
> > I'm not the architect of the app, so I'll have to discuss that with my > manager. I agree with your view, this increment thing brings back too > many bad memories anyway.. > > But, staying on point, will this solve my problem? > > Thank you, > > Regards, > > On Oct 15, 8:09 pm, Markus Zywitza <[email protected]> wrote: > > Don't use PrimaryKeyType.Increment. This ID generator counts only > locally, > > thus creating always 1 if you don't use a SessionScope. > > However, PrimaryKeyType.Increment is always an invitation to disaster. > Omit > > the primary key type to use SQL Server's IDENTITY feature. You might also > > use a GUID PK instead, then using PrimaryKeyType.GuidComb. > > > > -Markus > > > > 2009/10/15 Eduard Kruger <[email protected]> > > > > > > > > > > > > > Hi all, > > > > > I have these 2 classes in a C# 3.5 WCSF Web Application > > > > > [ > > > > > ActiveRecord(Lazy=true)][Serializable > > > ] > > > > > public class Class1: AuditableBase, > > > iClass1 > > > > > { > > > > > [ > > > > > PrimaryKey(Generator = PrimaryKeyType > > > .Increment)] > > > > > public virtual int Id { get; set > > > ; } > > > > > [ > > > > > Property > > > ] > > > > > public virtual string Name { get; set > > > ; } > > > > > [ > > > > > BelongsTo("QuestionnaireProfileVersionId", Type = typeof > > > (QuestionnaireProfileVersion), Cascade = CascadeEnum > > > .All)] > > > > > public virtual iQuestionnaireProfileVersion QuestionnaireProfile > > > { get; set > > > ; } > > > > > [ > > > > > Property > > > ] > > > > > public virtual TimeSpan TimeLimit { get; set > > > ; } > > > > > [ > > > > > Property > > > ] > > > > > public virtual bool isChangeLimited { get; set > > > ; } > > > > > [ > > > > > Property > > > ] > > > > > public virtual int RemainingChanges { get; set > > > ; } > > > > > [ > > > > > Property > > > ] > > > > > public virtual bool LimitInternetUserOnly { get; set > > > ; } > > > > > [ > > > > > Property(ColumnType = "BinaryBlob", SqlType="varbinary(max)" > > > )] > > > > > public virtual byte[] BannerImage { get; set > > > ; } > > > > > [ > > > > > Property > > > ] > > > > > public virtual string BannerImageType { get; set > > > ; } > > > > > [ > > > > > Property > > > ] > > > > > public virtual string TermsConditions { get; set > > > ; } > > > > > [ > > > > > HasMany(typeof(User), Cascade = ManyRelationCascadeEnum > > > .All)] > > > > > public virtual IList<iUser> Users { get; set > > > ; } > > > > > [ > > > > > HasAndBelongsToMany(typeof(Domain), Table = "CedantDomain", ColumnKey > > > = "CedantId", ColumnRef = "DomainId", Cascade = > > > ManyRelationCascadeEnum > > > .All)] > > > > > public virtual IList<iDomain> TrustedDomains { get; set > > > ; } > > > > > [ > > > > > HasMany(typeof(CedantProduct), Cascade = ManyRelationCascadeEnum > > > .All)] > > > > > public virtual IList<iCedantProduct> Products { get; set > > > ; } > > > > > [ > > > > > HasMany(typeof(CedantMandatoryField), Cascade = > > > ManyRelationCascadeEnum > > > .All)] > > > > > public virtual IList<iCedantMandatoryField> MandatoryField { get; set > > > ; } > > > > > [ > > > > > HasAndBelongsToMany(typeof(Class2), Table = "Table3", ColumnKey = > > > "Class1Id", ColumnRef = "Class2Id", Cascade = ManyRelationCascadeEnum > > > .All)] > > > > > public virtual IList<IClass2> Class2Items { get; set > > > ; } > > > > > The Outcome Group property is the one who is causing the problems, the > > > OutcomeGroup itself to follow soon: > > > > > public class Class2: AuditableBase, IClass2 { > > > > > /// <summary> > > > > > /// Default class constructor. > > > > > /// </summary> > > > > > public OutcomeGroup() > > > > > { > > > > > } > > > > > [ > > > > > PrimaryKey(Generator=PrimaryKeyType.Increment)] > > > > > public virtual int Id{get;set;} > > > > > [ > > > > > Property(Unique=true, Index="idx_uq_OutcomeGroupId")] > > > > > public virtual string OutcomeGroupUniqueId > > > > > { > > > > > get; > > > > > set; > > > > > } > > > > > [ > > > > > Property()] > > > > > public virtual string OutcomeGroupName > > > > > { > > > > > get; > > > > > set; > > > > > } > > > > > [ > > > > > HasMany(typeof(OutcomeGroupOutcome), Cascade = > > > ManyRelationCascadeEnum.AllDeleteOrphan)] > > > > > public virtual IList<IOutcomeGroupOutcome> OutcomeGroupOutcomes > > > > > { > > > > > get; > > > > > set; > > > > > } > > > > > [ > > > > > HasAndBelongsToMany(typeof(Class1), Table = "Table2", ColumnKey = > > > "Class2Id", ColumnRef = "Class1Id", Cascade = > > > ManyRelationCascadeEnum.All)] > > > > > public virtual IList<iClass1> Class1Items > > > > > { > > > > > get; > > > > > set; > > > > > } > > > > > } > > > > > I am trying to add a combo of these 2 classes together for the Class1 > > > Items and Class 2 Items many-to-many link, which works fine for the > > > first time you try to save something, however any time thereafter if > > > you try to save something, the following exception is thrown: > > > a different object with the same identifier value was already > > > associated with the session: 1, of entity: Class1 > > > > > It almost seems as if the system is trying to save the original record > > > (Class1) again in the database using the same ID, however no SQL is > > > executed (I checked with Profiler, nothing gets fired). > > > > > What am I missing or doing wrong? This is my First time working with > > > ActiveRecord and have exhausted all means of trying to repair it. > > > > > Any help would be greatly appreciated....- Hide quoted text - > > > > - Show quoted text - > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/castle-project-users?hl=en -~----------~----~----~----~------~----~------~--~---
