如何首先在 MVC 应用程序中使用 EF 代码检查 SQL 表中是否存在数据 ASP.NET
本文关键字:是否 SQL 存在 NET ASP 数据 检查 EF MVC 何首先 应用程序 | 更新日期: 2024-11-06 04:45:07
我有这个模型类:
public class MembershipSerial
{
[HiddenInput(DisplayValue=false)]
public int Id { get; set; }
[HiddenInput(DisplayValue=false)]
public string Serial { get; set; }
[Required]
[Display(Name="Membership Serial")]
public string SerialConfirmed { get; set; }
}
我正在使用EF代码优先方法,我想检查串行与串行确认的值,并找到任何等于串行确认的串行。
我在下面尝试过,但我得到一个空异常,不知道如何解决这个问题?
public ActionResult Checkout(UserDetails Details)
{
if (Details.MembershipSerial.Serial.Any().ToString() == Details.MembershipSerial.SerialConfirmed)
{
return View("UserSerial");
}
return View();
}
public class UserDetails : IdentityUser
{
public virtual DeliveryDetails DeliveryDetails { get; set; }
public virtual UserOrders UserOrders { get; set; }
public virtual MembershipSerial MembershipSerial { get; set; }
}
编辑:
public class MembershipSerial
{
[HiddenInput(DisplayValue=false)]
public int Id { get; set; }
[HiddenInput(DisplayValue=false)]
public string Serial { get; set; }
[Required]
[Display(Name="Membership Serial")]
public string SerialConfirmed { get; set; }
}
public class DeliveryDetails
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public string Company { get; set; }
public string Address { get; set; }
public string AddressLine2 { get; set; }
public string District { get; set; }
public string Province { get; set; }
}
public class UserOrders
{
public int Id { get; set; }
public string ProductName { get; set; }
}
public class MyDbContext : IdentityDbContext<UserDetails>
{
public MyDbContext()
: base ("EFDbContext")
{
}
public System.Data.Entity.DbSet<MembershipSerial> MembershipSerial { get; set; }
public System.Data.Entity.DbSet<DeliveryDetails> DeliveryDetails { get; set; }
public System.Data.Entity.DbSet<UserOrders> UserOrders { get; set; }
}
任何帮助,不胜感激。提前谢谢。
你的if语句应该是这样的:
if (Details.MembershipSerial.Serial == Details.MembershipSerial.SerialConfirmed)
串行和串行确认是字符串,因此您可以比较它们
如果您尝试将数据库中的任何Serial
与用户正在签出SerialConfirmed
进行比较,则需要一个变量来保存连接字符串的新实例:假设MemberShipSerial
是数据库中的表...
using(var db = new ConnectionString())
{
if(db.MembershipSerial.Any(x => x.Serial.ToUpper() == Details.MembershipSerial.SerialConfirmed.ToUpper())
{
/*do something*/
}
}
如果您只想根据用户键入的内容比较Serial
和SerialConfirmed
,请使用
if(Details.MembershipSerial.Serial.ToUpper() == Details.MembershipSerial.SerialConfirmed.ToUpper())
如果第二个选项返回 null 异常,则必须在 CheckingIn
操作上进行调试,并查看这些属性是否包含您期望的值