سؤال

ولدي البرمجية التالية، والتي من المفترض أن تمنح وظيفة معينة ولكنها ليست: S

وعلى أي حال، وهنا مشكلتي:

http://img525.imageshack.us/img525/1315/diagramp.png

وهنا رمز رسم الخرائط:

public class UsersMap : ClassMap<User>
{
    public UsersMap()
    {

        this.Table("Users");
        Id(x => x.UserName).GeneratedBy.Assigned();

        Map(x => x.FirstName);
        Map(x => x.LastName);
        Map(x => x.Password);
        Map(x =>x.EMail);
        Map(x => x.Title);
        Map(x => x.Division);
        Map(x => x.Status);

        HasManyToMany(x => x.Roles)
            .Table("UserInRoles").ParentKeyColumn("Username")
            .ChildKeyColumn("RoleId").AsBag().Inverse();


    }
}

public class RolesMap : ClassMap<Role>
{

    public RolesMap()
    {
        this.Table("Roles");
        Id(x => x.ID).GeneratedBy.Assigned();
        Map(x => x.RoleName);

        HasManyToMany(x => x.Users)
            .Table("UserInRoles").ParentKeyColumn("RoleId")
            .ChildKeyColumn("Username").AsBag().Cascade.All();

    }


}

ومشكلتي هي عندما يحاول (تعيين دور للمستخدم معين) يتم إضافة اسم المستخدم إلى UserInRoles الجدول ولكن ID دور إذا كان موجود بالفعل ستتم إزالة من الصف corrosponding وتعيين إلى صف جديد، أي فكرة

هل كانت مفيدة؟

المحلول

هل نظرت اتخاذ ManyToMany العمل من الاتفاقية ؟

والمثال مرتبط في الواقع يشير إلى الأدوار والى حد كبير ما تحاول القيام به هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top