【发布时间】:2015-07-31 20:11:06
【问题描述】:
我有以下模型类,其中它的NETWORKID (PK) 不是系统生成的:-
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; }
}
}
现在我将当前的 networkinfo 实体保存在一个列表中,然后我想通过为它们分配新的 NetworkID 来再次添加它们。所以我尝试以下方法:-
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++;
}
}
}
但这会引发以下错误:-
The property 'NETWORKID' is part of the object's key information and cannot be modified.
但如果我按如下方式重写它,那么我可以添加新实体:-
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++;
}
}
所以我的问题是为什么在第一种方法中我得到一个无法修改 NetworkID 的错误,而在第二种方法中我没有得到任何错误?虽然在这两种情况下我都在我的代码中分配了 NetworkID ?
【问题讨论】:
标签: c# asp.net-mvc entity-framework entity-framework-6