nop中导航属性的写法

以以下三张表为例。

image

SpecificationAttribute对应多个SpecificationAttributeOption。所以他们的关系是一对多。

在SpecificationAttribute。要先定义SpecificationAttributeOption的字段 。

如下所示。

private ICollection<SpecificationAttributeOption> _specificationAttributeOptions;

定义字段后。就可以定导航关系了。

       /// <summary>
        /// Gets or sets the specification attribute options
        /// </summary>
        public virtual ICollection<SpecificationAttributeOption> SpecificationAttributeOptions
        {
            get { return _specificationAttributeOptions ?? (_specificationAttributeOptions = new List<SpecificationAttributeOption>()); }
            protected set { _specificationAttributeOptions = value; }
        }
 
 
反之在SpecificationAttributeOption中SpecificationAttribute是一的一端。
所以在SpecificationAttributeOption只要定义一个就够了。当然的定义SpecificationAttributeId
代码如下。
        /// <summary>
        /// Gets or sets the specification attribute identifier
        /// </summary>
        public int SpecificationAttributeId { get; set; }

同时导航关系如下所示

        /// <summary>
        /// Gets or sets the specification attribute
        /// </summary>
        public virtual SpecificationAttribute SpecificationAttribute { get; set; }

这样就完成了一对多的关系。总结如下:一对多这种关系,则在一的端把多的端定义成为

这个是定义字段    private ICollection<T> _xxxxxxxs;
接着定义属性     
        /// <summary>
        /// Gets or sets the product specification attribute
        /// </summary>
        public virtual ICollection<T> Ts
        {
            get { return _xxxxxxxxs ?? (_xxxxxxxxs  = new List<Ts>()); }
            protected set { _xxxxxxxxs  = value; }
        }

这样就完成了在一的端对.多端的定义

在多的端.只要把一的这一端的Id定义下..

        public int SpecificationAttributeOptionId { get; set; }

         public virtual SpecificationAttributeOption SpecificationAttributeOption { get; set; }
OK.完成
原文地址:https://www.cnblogs.com/zhaojianwei/p/3899390.html