none
Entidades POCO con EF, problema al crear relación en POCO RRS feed

  • Pregunta

  • Hola buen día 

    Espero que me puedan ayudar, acontinuación les explico mi problema:

    Estas son mis entidades:

    Entidades

    Necesito crear con POCO las relaciones de por ejemplo resultadobusquedaofac con SDN, para esto yo use las plantillas de POCO

    Plantilla POCO

    luego yo mismo le cree las asociaciones dentro estas entidades: 

    ResultadoBusquedaOfac

    //------------------------------------------------------------------------------
    // <auto-generated>
    //     This code was generated from a template.
    //
    //     Changes to this file may cause incorrect behavior and will be lost if
    //     the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------
    
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.Collections.Specialized;
    
    namespace TestOfac.BE.PrevencionLegitimacionCapitales
    {
        public partial class ResultadoBusquedaOfac
        {
            #region Primitive Properties
        
            public virtual int ent_num
            {
                get;
                set;
            }
        
            public virtual string SDN_Name
            {
                get;
                set;
            }
        
            public virtual int KeyCliente
            {
                get;
                set;
            }
        
            public virtual string HayCoincidencia
            {
                get;
                set;
            }
        
            public virtual string HayCoincidenciaAlias
            {
                get;
                set;
            }
    
            #endregion
    
            public virtual ICollection<OFAC_SDN> OFAC_SDN
            {
                get
                {
                    if (_oFAC_SDN == null)
                    {
                        var newCollection = new FixupCollection<OFAC_SDN>();
                        newCollection.CollectionChanged += FixupOFAC_SDN;
                        _oFAC_SDN = newCollection;
                    }
                    return _oFAC_SDN;
                }
                set
                {
                    if (!ReferenceEquals(_oFAC_SDN, value))
                    {
                        var previousValue = _oFAC_SDN as FixupCollection<OFAC_SDN>;
                        if (previousValue != null)
                        {
                            previousValue.CollectionChanged -= FixupOFAC_SDN;
                        }
                        _oFAC_SDN = value;
                        var newValue = value as FixupCollection<OFAC_SDN>;
                        if (newValue != null)
                        {
                            newValue.CollectionChanged += FixupOFAC_SDN;
                        }
                    }
                }
            }
            private ICollection<OFAC_SDN> _oFAC_SDN;
    
    
            private void FixupOFAC_SDN(object sender, NotifyCollectionChangedEventArgs e)
            {
                if (e.NewItems != null)
                {
                    foreach (OFAC_SDN item in e.NewItems)
                    {
                        item.ResultadoBusquedaOfac = this;
                    }
                }
    
                if (e.OldItems != null)
                {
                    foreach (OFAC_SDN item in e.OldItems)
                    {
                        if (ReferenceEquals(item.ResultadoBusquedaOfac, this))
                        {
                            item.ResultadoBusquedaOfac = null;
                        }
                    }
                }
            }
        }
    }
    OFAC_SDN

    //------------------------------------------------------------------------------
    // <auto-generated>
    //     This code was generated from a template.
    //
    //     Changes to this file may cause incorrect behavior and will be lost if
    //     the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------
    
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.Collections.Specialized;
    
    namespace TestOfac.BE.PrevencionLegitimacionCapitales
    {
        public partial class OFAC_SDN
        {
            #region Primitive Properties
    
            public virtual Nullable<int> id_Ofac
            {
                get { return _id_Ofac; }
                set
                {
                    try
                    {
                        _settingFK = true;
                        if (_id_Ofac != value)
                        {
                            if (ResultadoBusquedaOfac != null && ResultadoBusquedaOfac.ent_num != value)
                            {
                                ResultadoBusquedaOfac = null;
                            }
                            _id_Ofac = value;
                        }
                    }
                    finally
                    {
                        _settingFK = false;
                    }
                }
            }
            private Nullable<int> _id_Ofac;
        
            public virtual int ent_num
            {
                get;
                set;
            }
        
            public virtual string SDN_Name
            {
                get;
                set;
            }
        
            public virtual string SDN_Type
            {
                get;
                set;
            }
        
            public virtual string Program
            {
                get;
                set;
            }
        
            public virtual string Title
            {
                get;
                set;
            }
        
            public virtual string Call_Sign
            {
                get;
                set;
            }
        
            public virtual string Vess_type
            {
                get;
                set;
            }
        
            public virtual string Tonnage
            {
                get;
                set;
            }
        
            public virtual string GRT
            {
                get;
                set;
            }
        
            public virtual string Vess_flag
            {
                get;
                set;
            }
        
            public virtual string Vess_owner
            {
                get;
                set;
            }
        
            public virtual string Remarks
            {
                get;
                set;
            }
    
            #endregion
            #region Navigation Properties
    
            public virtual ResultadoBusquedaOfac ResultadoBusquedaOfac
            {
                get { return _resultadoBusquedaOfac; }
                set
                {
                    if (!ReferenceEquals(_resultadoBusquedaOfac, value))
                    {
                        var previousValue = _resultadoBusquedaOfac;
                        _resultadoBusquedaOfac = value;
                        FixupResultadoBusquedaOfac(previousValue);
                    }
                }
            }
            private ResultadoBusquedaOfac _resultadoBusquedaOfac;
    
            public virtual ICollection<OFAC_ADD> OFAC_ADD
            {
                get
                {
                    if (_oFAC_ADD == null)
                    {
                        var newCollection = new FixupCollection<OFAC_ADD>();
                        newCollection.CollectionChanged += FixupOFAC_ADD;
                        _oFAC_ADD = newCollection;
                    }
                    return _oFAC_ADD;
                }
                set
                {
                    if (!ReferenceEquals(_oFAC_ADD, value))
                    {
                        var previousValue = _oFAC_ADD as FixupCollection<OFAC_ADD>;
                        if (previousValue != null)
                        {
                            previousValue.CollectionChanged -= FixupOFAC_ADD;
                        }
                        _oFAC_ADD = value;
                        var newValue = value as FixupCollection<OFAC_ADD>;
                        if (newValue != null)
                        {
                            newValue.CollectionChanged += FixupOFAC_ADD;
                        }
                    }
                }
            }
            private ICollection<OFAC_ADD> _oFAC_ADD;
        
            public virtual ICollection<OFAC_ALT> OFAC_ALT
            {
                get
                {
                    if (_oFAC_ALT == null)
                    {
                        var newCollection = new FixupCollection<OFAC_ALT>();
                        newCollection.CollectionChanged += FixupOFAC_ALT;
                        _oFAC_ALT = newCollection;
                    }
                    return _oFAC_ALT;
                }
                set
                {
                    if (!ReferenceEquals(_oFAC_ALT, value))
                    {
                        var previousValue = _oFAC_ALT as FixupCollection<OFAC_ALT>;
                        if (previousValue != null)
                        {
                            previousValue.CollectionChanged -= FixupOFAC_ALT;
                        }
                        _oFAC_ALT = value;
                        var newValue = value as FixupCollection<OFAC_ALT>;
                        if (newValue != null)
                        {
                            newValue.CollectionChanged += FixupOFAC_ALT;
                        }
                    }
                }
            }
            private ICollection<OFAC_ALT> _oFAC_ALT;
    
            #endregion
    
            #region Association Fixup
    
            private bool _settingFK;
    
            private void FixupResultadoBusquedaOfac(ResultadoBusquedaOfac previousValue)
            {
                if (previousValue != null && previousValue.OFAC_SDN.Contains(this))
                {
                    previousValue.OFAC_SDN.Remove(this);
                }
    
                if (ResultadoBusquedaOfac != null)
                {
                    if (!ResultadoBusquedaOfac.OFAC_SDN.Contains(this))
                    {
                        ResultadoBusquedaOfac.OFAC_SDN.Add(this);
                    }
                    if (id_Ofac != ResultadoBusquedaOfac.ent_num)
                    {
                        id_Ofac = ResultadoBusquedaOfac.ent_num;
                    }
                }
                else if (!_settingFK)
                {
                    id_Ofac = null;
                }
            }
    
            private void FixupOFAC_ADD(object sender, NotifyCollectionChangedEventArgs e)
            {
                if (e.NewItems != null)
                {
                    foreach (OFAC_ADD item in e.NewItems)
                    {
                        item.OFAC_SDN = this;
                    }
                }
        
                if (e.OldItems != null)
                {
                    foreach (OFAC_ADD item in e.OldItems)
                    {
                        if (ReferenceEquals(item.OFAC_SDN, this))
                        {
                            item.OFAC_SDN = null;
                        }
                    }
                }
            }
        
            private void FixupOFAC_ALT(object sender, NotifyCollectionChangedEventArgs e)
            {
                if (e.NewItems != null)
                {
                    foreach (OFAC_ALT item in e.NewItems)
                    {
                        item.OFAC_SDN = this;
                    }
                }
        
                if (e.OldItems != null)
                {
                    foreach (OFAC_ALT item in e.OldItems)
                    {
                        if (ReferenceEquals(item.OFAC_SDN, this))
                        {
                            item.OFAC_SDN = null;
                        }
                    }
                }
            }
    
            #endregion
        }
    }

    Ahora cuando ejecuto un query de prueba:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using TestOfac.BE.PrevencionLegitimacionCapitales;
    
    namespace TestOfac.UI
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
    
                LegitimacionEntities context = new LegitimacionEntities();
                var query = context.ResultadoBusquedaOfac.Include("OFAC_SDN").Where(us => us.ent_num.Equals(10)).First();
    
                MessageBox.Show(query.SDN_Name);
            }
        }
    }

    me arroja el siguiente error: 

    A specified Include path is not valid. The EntityType 'LegitimacionModel.ResultadoBusquedaOfac' does not declare a navigation property with the name 'OFAC_SDN'.

    Y adicional a esto luego tengo que pasar la data por dataservice o WCF, ahorita lo estoy haciendo asi para probar primero que las relaciones esten bien antes de pasarlo a lo mencionado.

    Muchas Gracias de Antemano y espero sus comentarios...

    Feliz día


    lunes, 15 de octubre de 2012 23:52