C# ASP MVC测试项目级联删除而不是无操作
我对删除有一个不寻常的问题。我的模型包括一个联系人表。联系人可能有鹿联系人信息或牲畜联系人信息。SQL express选项被设置为“无操作”,换句话说,如果共享数据在其他表中有任何子行,则可以防止其被删除。如果存在鹿或牲畜数据,则不会删除。SQL express选项被设置为“无操作”,换句话说,如果共享数据在其他表中有任何子行,则可以防止其被删除 例如:C# ASP MVC测试项目级联删除而不是无操作,c#,asp.net-mvc,cascading-deletes,C#,Asp.net Mvc,Cascading Deletes,我对删除有一个不寻常的问题。我的模型包括一个联系人表。联系人可能有鹿联系人信息或牲畜联系人信息。SQL express选项被设置为“无操作”,换句话说,如果共享数据在其他表中有任何子行,则可以防止其被删除。如果存在鹿或牲畜数据,则不会删除。SQL express选项被设置为“无操作”,换句话说,如果共享数据在其他表中有任何子行,则可以防止其被删除 例如: 联系人96拥有牲畜和鹿场数据 用户选择deer farm并删除96个 结果:仅删除鹿场数据。共享的联系人数据与其行一起保留 用户选择牲畜并删
- 联系人96拥有牲畜和鹿场数据
- 用户选择deer farm并删除96个
- 结果:仅删除鹿场数据。共享的联系人数据与其行一起保留
- 用户选择牲畜并删除96
- 结果:由于牲畜是唯一的子行,共享数据将随它一起删除。96年内将没有剩余数据
- 联系人96拥有牲畜和鹿场数据
- 测试项目选择deer farm并删除96个
- 结果:删除所有数据,包括牲畜。这是一个级联删除,不是期望的结果
if (contactType == Globals.getLivestockType())
try
{
livestock_contacts_info livestock_contacts_info = db.livestock_contacts_info.Find(id);
if (livestock_contacts_info != null)
{
db.livestock_contacts_info.Remove(livestock_contacts_info);
db.SaveChanges();
}
}
catch (Exception)
{
CSession["message"] = "Error deleting livestock information for contact_id" + id;
return RedirectToAction("ListContacts");
}
else if (contactType == Globals.getDeerFarmType())
try
{
deer_contacts_info deer_contacts_info = db.deer_contacts_info.Find(id);
if (deer_contacts_info != null)
{
db.deer_contacts_info.Remove(deer_contacts_info);
db.SaveChanges();
}
}
catch (Exception)
{
CSession["message"] = "Error deleting deer contact information for contact_id" + id;
return RedirectToAction("ListContacts");
}
/* after deleting subject specific data, attempt to delete shared data. Shared data will not be deleted
If it has any subject data remaining.
*/
try
{
contact contact = db.contacts.Find(id);
if (contact == null)
{
CSession["message"] = "contact " + id + " doesn't exist";
}
else
{
db.contacts.Remove(contact);
db.SaveChanges();
}
return RedirectToAction("ListContacts");
}
我研究了接触的定义,试图了解发生了什么。这是:
public partial class contact
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int CONTACT_ID { get; set; }
[RegularExpression("^[^;]{0,100}$", ErrorMessage="This text field has unacceptable characters")] /* ; not allowed */
public string FIRST_NAME { get; set; }
public string MIDDLE_NAME { get; set; }
public string LAST_NAME { get; set; }
public string BUSINESS_NAME { get; set; }
public string ADDRESS1 { get; set; }
public string ADDRESS2 { get; set; }
public string CITY { get; set; }
public string STATE { get; set; }
public string ZIP_CODE { get; set; }
public string COUNTRY { get; set; }
public string TELEPHONE1 { get; set; }
public string TELEPHONE2 { get; set; }
[RegularExpression("^[0-9-]{0,10}$", ErrorMessage="Please use only digits and dashes, with a maximum length of 10")]
public string CELL_PHONE { get; set; }
[EmailAddress]
public string EMAIL_ADDRESS { get; set; }
public string COMMENTS { get; set; }
public virtual deer_contacts_info deer_contacts_info { get; set; }
public virtual livestock_contacts_info livestock_contacts_info { get; set; }
}
代码段首先删除鹿场和牲畜数据,然后删除共享联系人。在代码的共享联系人删除部分,我比较了两个测试的类内容:对于web MVC测试,
deer\u contacts\u info
和Fastes\u contacts\u info
都为空。但是,测试项目测试具有非空内容。然后我修改了代码,使它们都为空。结果没有改变:测试项目执行级联删除。你对此有什么想法吗?请修复你的标签:这不是asp-classic。你好,玛莎,谢谢你的询问。这不是经典的ASP,这是MVC。