La propriété est une partie de l'objet de l'information clé et ne peuvent pas être modifiés

J'ai le modèle suivant de la classe, où son NETWORKID (PK) n'est pas généré par le système:-

  public partial class NetworkInfo
    {
        public long NETWORKID { get; set; }
        public long WORKSTATIONID { get; set; }
        public string NICNAME { get; set; }
        public string NICDESCRIPTION { get; set; }
        public string IPADDRESS { get; set; }
        public string MACADDRESS { get; set; }
        public string IPNETMASK { get; set; }
        public string NETWORK { get; set; }
        public string GATEWAY { get; set; }
        public string ISDHCP { get; set; }
        public string DHCPSERVER { get; set; }
        public string NICLEASE { get; set; }

        public virtual Resource Resource { get; set; }
    }
}

maintenant, je suis d'enregistrer le courant networkinfo entités à l'intérieur d'une liste, alors je veux l'ajouter à nouveau , par l'attribution de NetworkID à eux. j'ai donc essayer les suivantes :-

public void SaveAdditionalNeyworkInfo(long assetid, List<NetworkInfo> networkinfo) 
        {
            int i = 1;
            long max = entities.NetworkInfoes.Max(a => a.NETWORKID);
            foreach (var e in networkinfo.OrderBy(a=>a.NETWORKID))
            {
                if (i == 1)
                    i++;
                else
                {
                    e.NETWORKID = max + 1;
                    entities.NetworkInfoes.Add(e);
                    max++;
                }

            }

        }

mais cette hausse d'erreur suivants:-

The property 'NETWORKID' is part of the object's key information and cannot be modified.

mais si je le ré-écrire comme suit ensuite je peux ajouter de nouvelles entités :-

public void SaveAdditionalNeyworkInfo(long assetid, List<NetworkInfo> networkinfo) 
        {
            int i = 1;
            long max = entities.NetworkInfoes.Max(a => a.NETWORKID);
            foreach (var e in networkinfo.OrderBy(a=>a.NETWORKID))
            {
                if (i == 1)
                    i++;
                else
                {
                   NetworkInfo n = new NetworkInfo()
                   {
                       NETWORKID = max+1,
                       WORKSTATIONID = assetid,
                       NICNAME =e.NICNAME,
                        NICDESCRIPTION = e.NICDESCRIPTION,
                      IPADDRESS = e.IPADDRESS,
                        MACADDRESS=e.MACADDRESS,
                       IPNETMASK=e.IPNETMASK,
                        NETWORK=e.NETWORK,
                        GATEWAY=e.GATEWAY,
                       ISDHCP=e.ISDHCP,
                       DHCPSERVER=e.DHCPSERVER,
                       NICLEASE=e.NICLEASE

                   };

                 entities.NetworkInfoes.Add(n);
                   max++;
                }

            }

donc ma question est pourquoi dans la première approche, j'ai une erreur que le NetworkID ne peut pas être modifié , alors que dans la seconde approche, je n'ai pas d'erreur ? bien que dans les deux cas, je suis attribuer le NetworkID à l'intérieur de mon code ?

InformationsquelleAutor john Gu | 2015-07-31