Avatar billede simsen Mester
14. september 2012 - 13:42 Der er 1 løsning

Problemer med at hente properties fra en klasse

Hej

Jeg er i gang med at lave mig et system, hvor der skal være forskellige interfaces og hvor jeg gør brug af NHibernate. Af samme grund har jeg  jo så delt tingene op i forskellige projekter og klasser.

Jeg har en DAL projekt, hvor jeg har alt database tilgangen.
Jeg har en ImplService projekt med klasser hvor mine metoder er og som arver fra InterfaceService projektet.
Jeg har en InterfaceService projekt med klasser hvor mine metoder (med in- og output parametre) bliver listet.
Jeg har et Web projekt med, hvor mine metoder skal bruges.

I den ene klasse, får jeg godt nok alting med og jeg kan også hente de parametre, jeg har skrevet. I den anden kommer mine parametre ikke med over (til web projektet) når jeg kalder dem. Jeg håber ved at vise den der går godt og den der går skidt, at en af jer kan fortælle mig, hvor min fejl ligger henne;

Dal'en hvor jeg laver database bearbejdning
Den der går godt:
namespace DAL.AnsiCrm_Area
{
    public class AnsiCrm_Area
    {
        #region " Enums, Members, Properties "

        public int areaId { get; set; }
        public string areaName { get; set; }

        #endregion

        #region " Data Access Get "

        public DataTable AnsiCrm_GetArea(int areaId)
        {
            try
            {
                DatabaseGeneric.EntityClasses.AnsiCrm_Area areas = DatabaseGeneric.EntityClasses.AnsiCrm_AreaDAO.LoadAnsiCrm_AreaByORMID(areaId);

                if (areas != null)
                {
                    areaId = areas.ORMID;
                    areaName = areas.AreaName;
                }

                DatabaseGeneric.EntityClasses.AnsiCrm_AreaCriteria areaCriteria = new DatabaseGeneric.EntityClasses.AnsiCrm_AreaCriteria();
                areaCriteria.AreaId.Eq(areaId);
                DatabaseGeneric.EntityClasses.AnsiCrm_Area[] area = areaCriteria.ListAnsiCrm_Area();

                return HelpersStatics.ToDataTable(area);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
#endregion
Den der ikke går godt:
namespace DAL.AnsiCrm_System
{
    public class AnsiCrm_SystemOptions
    {
        #region " Enums, Members, Properties "

        DBUtility DAL = new DBUtility();

        public int optionId { get; set; }

        #region " Company "
        //Felter
        public bool Company_Phone { get; set; }
        public bool Company_Fax { get; set; }
        public bool Company_Email { get; set; }
        public bool Company_Homepage { get; set; }
        public bool Company_Comment { get; set; }
        public bool Company_Address1 { get; set; }
        public bool Company_Address2 { get; set; }
        public bool Company_Country { get; set; }
        public bool Company_ZipCode { get; set; }
        public bool Company_City { get; set; }
        public bool Company_AccountNo { get; set; }
        public bool Company_Cvr { get; set; }
        public bool Company_PNo { get; set; }
        public bool Company_Responsible1 { get; set; }
        public bool Company_Responsible2 { get; set; }
        public bool Company_Status { get; set; }
        public bool Company_Area { get; set; }
        public bool Company_Type { get; set; }
        public bool Company_Branch { get; set; }
        public bool Company_Corporate { get; set; }

        //Page Company New/Edit
        public bool pCompanyNewEdit_aDisplayCompany { get; set; }
        public bool pCompanyNewEdit_aDisplayCompanyComment { get; set; }
        public bool pCompanyNewEdit_aDisplayCompanyAddress { get; set; }
        public bool pCompanyNewEdit_aDisplayCompanyAccount { get; set; }
        public bool pCompanyNewEdit_aDisplayCompanyInformation { get; set; }

        //Page Company List
        public bool pCompanyList_aDisplayCompaniesSearch { get; set; }
        public bool pCompanyList_aDisplayCompaniesSearchStartsWith { get; set; }

        //Page Company View
        public bool pCompanyView_aDisplayCompanyViewActivityLink { get; set; }
        public bool pCompanyView_aDisplayCompanyViewMeetingLink { get; set; }
        public bool pCompanyView_aDisplayCompanyViewContactLink { get; set; }
        public bool pCompanyView_aDisplayCompanyViewOfferLink { get; set; }
        public bool pCompanyView_aDisplayCompanyViewDeliveryLink { get; set; }
        public bool pCompanyView_aDisplayCompanyViewEmailLink { get; set; }
        public bool pCompanyView_aDisplayCompanyViewDocumentLink { get; set; }
        public bool pCompanyView_aDisplayCompanyViewRelationLink { get; set; }
        public bool pCompanyView_aDisplayCompanyViewActivitiesList { get; set; }
        public bool pCompanyView_aDisplayCompanyViewContactsList { get; set; }
        public bool pCompanyView_aDisplayCompanyViewMeetingsList { get; set; }   
        #endregion

        //public bool xxx { get; set; }

        #endregion

        #region " Data Access Get "
        public void AnsiCrm_GetViewOptionList(int customerId)
        {
            try
            {
                DatabaseGeneric.EntityClasses.AnsiCrm_System_OptionsCriteria systemOptionsCritería = new DatabaseGeneric.EntityClasses.AnsiCrm_System_OptionsCriteria();

                DatabaseGeneric.EntityClasses.AnsiCrm_System_OptionsColumnCriteria optionsColumnCriteria = systemOptionsCritería.CreateOptionCoulmnCriteria();

                DatabaseGeneric.EntityClasses.AnsiCrm_CustomersCriteria customersCriteria = systemOptionsCritería.CreateCustomerCriteria();
                customersCriteria.CustomerId.Eq(customerId);             

                DatabaseGeneric.EntityClasses.AnsiCrm_System_Options[] systemOptions = systemOptionsCritería.ListAnsiCrm_System_Options();

                if (systemOptions != null)
                {
                    for (int i = 0; i < systemOptions.Length; i++)
                    {
                        string name = systemOptions[i].OptionCoulmn.OptionColumnName;

                        #region " Company "
                        if (name == "Company_Phone")
                        {
                            Company_Phone = systemOptions[i].ViewOption;
                        }
                        else if (name == "Company_Fax")
                        {
                            Company_Fax = systemOptions[i].ViewOption;
                        }
                        #endregion
                    }
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        #endregion

Min Interface service
Den der går godt:
namespace InterfaceService
{
    public interface IAreaService
    {
        int areaId { get; set; }
        string areaName { get; set; }

        //Get
        DataTable GetArea(int areaId);
    }
}
Den der ikke går godt:
namespace InterfaceService
{
    public interface ISystemOptionService
    {
        int optionId { get; set; }

        #region " Company "
        //Felter
        bool Company_Phone { get; set; }
        bool Company_Fax { get; set; }
        #endregion

        void GetViewOptionList(int customerId);

    }
}
Min ImplService
Den der går godt:
namespace ImplService
{
    public class Areas : IAreaService
    {
        public int areaId { get; set; }
        public string areaName { get; set; }

        //Get
        public DataTable GetArea(int areaId)
        {
            try
            {
                AnsiCrm_Area areas = new AnsiCrm_Area();
                DataTable getData = areas.AnsiCrm_GetArea(areaId);

                areaId = areas.areaId;
                areaName = areas.areaName;

                return getData;
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }
    }
}
Den der ikke går godt:
namespace ImplService
{
    public class SystemOption : ISystemOptionService
    {
        public int optionId { get; set; }

        #region " Company "
        //Felter
        public bool Company_Phone { get; set; }
        public bool Company_Fax { get; set; }
        #endregion

        //Get       
        public void GetViewOptionList(int customerId)
        {
            try
            {
                AnsiCrm_SystemOptions systemoptions = new AnsiCrm_SystemOptions();
                systemoptions.AnsiCrm_GetViewOptionList(customerId);

                #region " Company "
                Company_Phone = systemoptions.Company_Phone;
                Company_Fax = systemoptions.Company_Fax;                #endregion

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}

Og her vil jeg så teste det i en pageLoad side på Web delen:
Areas areas = new Areas();
            areas.GetArea(1);
            string areaName = areas.areaName;
            int areaId = areas.areaId;

            SystemOption systemOption = new SystemOption();
            systemOption.SetViewOption(2, false);

            SystemOption systemOption2 = new SystemOption();
            systemOption.GetViewOptionList(1);
            bool test1 = systemOption2.Company_Phone;
            bool test2 = systemOption2.Company_Fax;

areaName og areaId kommer ganske glimrende ud -men systemOption2 henter ikke Company_Phone og Company_Fax ud - de står som bool false begge - hvor jeg ved fra databasen at den ene står som false og den anden som true.

Laver jeg en run to curser på ImplService klassen får den godt nok de korrekte data ud - altså én true og én false. Så jeg tror det er i bindingen - altså InterfaceService der går noget galt.

Jeg håber, det ikke er for forvirrende og jeg kan få lidt hjælp.

Mvh
simsen :-)
Avatar billede simsen Mester
14. september 2012 - 17:17 #1
Ja ja - en dag er der vel forhåbentligt styr på, hvad jeg laver

Jeg har langt om længe fundet fejlen...

I stedet for

systemOption.GetViewOptionList(1);

skal det selvfølgelig være systemOption2.GetViewOptionList(1);

Altså med andre ord, skal jeg selvfølgelig huske at hente (den rigtige) metoden før jeg henter properties der bliver tildelt til metoden :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester