【发布时间】:2021-09-23 13:17:20
【问题描述】:
我有两个“卖家和车辆表”两个表,我想获取卖家创建的车辆列表。卖家表有主键Id和车辆'VehicleId'的外键引用,卖家通过sellerid应该可以得到自己创建的车辆列表。 我的意思是,sellerid 应该得到他/她创建的车辆列表。
请检查我在 SellerRepository 中尝试过的代码
这是卖家表
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Models
{
public class Seller
{
public int Id { get; set; }
[Required]
public int VehicleId { get; set; }
[ForeignKey("VehicleId")]
public Vehicle Vehicle { get; set; }
public string Name { get; set; }
public string Title { get; set; }
[EmailAddress(ErrorMessage = "Invalid Email ID")]
[StringLength(50)]
public string SellerEmail { get; set; }
public int Age { get; set; }
public string Sex { get; set; }
public string Company { get; set; }
public string Address { get; set; }
public int SellerPhone { get; set; }
public string City { get; set; }
public string Country { get; set; }
public int PhoneNo2 { get; set; }
public string PostalCode { get; set; }
[Display(Name = "Profile Image")]
[StringLength(100)]
public string ProfileImagePath { get; set; }
}
}
这是车辆表
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using Utility.Extensions;
namespace Models
{
public class Vehicle
{
public int Id { get; set; }
public Make Make { get; set; }
[RegularExpression("^[1-9]*$", ErrorMessage = "Select Make")]
public int MakeID { get; set; }
public Model Model { get; set; }
[RegularExpression("^[1-9]*$", ErrorMessage = "Select Model")]
public int ModelID { get; set; }
[Required(ErrorMessage = "Provide Year")]
[YearRangeTillDate(2000,ErrorMessage = "Not with in the valid Year range")]
public int Year { get; set; }
[Required(ErrorMessage = "Enter Mileage")]
[Range(1,int.MaxValue,ErrorMessage ="Not with in the valid mileage range")]
public int Mileage { get; set; }
public string Features { get; set; }
[Required(ErrorMessage ="Provide Seller Name")]
[StringLength(50)]
public string SellerName { get; set; }
[EmailAddress(ErrorMessage ="Invalid Email ID")]
[StringLength(50)]
public Seller SellerEmail { get; set; }
[Required(ErrorMessage = "Provide Phone No.")]
[Phone]
[StringLength(15)]
public Seller SellerPhone { get; set; }
[Required(ErrorMessage = "Provide Price")]
[Range(1, 999999999, ErrorMessage = "Not with in the valid price range")]
public int Price { get; set; }
[Required]
[StringLength(10)]
[RegularExpression("^[a-zA-Z]*$", ErrorMessage ="Select Currency")]
public string Currency { get; set; }
[Display(Name ="Image File")]
[StringLength(100)]
public string ImagePath { get; set; }
}
}
ISellerRepository。
using Microsoft.AspNetCore.Mvc.Rendering;
using Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Persistence.Repository.IRepository
{
public interface ISellerRepository : IRepository<Seller>
{
IEnumerable<SelectListItem> GetModelListForDropDown();
// void Update(Seller model);
Task<bool> SellerOwnsVehicleAsync(int sellerId, int vehicleId);
}
}
SellerRepository 获取卖家创建的车辆列表
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using Models;
using Persistence.Repository.IRepository;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Persistence.Repository
{
public class SellerRepository : Repository<Seller>, ISellerRepository
{
private readonly AutoServDbContext _db;
public SellerRepository(AutoServDbContext db) : base (db)
{
_db = db;
}
public IEnumerable<SelectListItem> GetModelListForDropDown()
{
return _db.Sellers.Select(i => new SelectListItem()
{
Text = i.Name,
Value = i.Id.ToString()
});
}
public async Task<bool> SellerOwnsVehicleAsync(int sellerId, int vehicleId)
{
var seller = await _db.Sellers.AsNoTracking().SingleOrDefaultAsync(x => x.Id == sellerId);
if (seller == null)
{
return false;
}
if (seller.VehicleId != vehicleId)
{
return false;
}
return true;
}
}
}
【问题讨论】:
-
Vehicle.SellerEmail和Vehicle.SellerPhone在此模型中都返回Seller的实例。Vehicle和Seller之间的关系看起来没有正确定义。这可能是您问题的根源。您的请求听起来像您期望Seller有多个Vehicle... 可能在一个名为Vehicles的属性中,但您没有在模型中提供。 -
我也这么认为。您提到了多个车辆,但您在卖方模型中只定义了一个车辆而不是列表:[ForeignKey("VehicleId")] public Vehicle Vehicle { get;放; }
标签: c# asp.net .net linq repository