1 つは会社と呼ばれ、もう 1 つは場所と呼ばれる 2 つのテーブルがあります。会社には Id と名前があり、場所には Id、CompanyId、Name、および SubAccount があります。私は2つのプロジェクトを持っています。1 つは、すべての検証がある IMS.Data と Web フォーム ページがある IMS です。会社に場所がある場合(会社IDがどこかに外部キーである場合)、レコードを削除しないことを検証するのに問題があります。これまでのところ、すべてが機能していますが、ラムダ式を使用してチェックを行うために Locations CompanyId を参照することはできません。誰でも私を助けてくれますか?私はラムダ式が初めてです。
これが私が検証に使用している方法です
namespace IMS.Data
{
public class CompanyContext : IMSDBContext
{
public Company DeleteCompany(Company company)
{
if (company.Name == null)
{
throw new Exception("Please select a record to delete.");
}
if (Companies.Any(x => x.Name == company.Name))
{
throw new Exception("Can not delete a company that has a location.");
}
Companies.Remove(company);
return company;
}
}
}
これが私が使用する削除ボタンです
namespace IMS
{
public partial class CompanySetUp : Page
{
private const string AddButton = "Add";
private const string SaveButton = "Save";
private const string DeleteButton = "Delete";
private const string CancelButton = "Cancel";
private int CompanyId // This puts the "CompanyId" into a viewstate and is used to update the record
{
get
{
return (int)ViewState["_companyId"];
}
set
{
ViewState["_companyId"] = value;
}
}
private IList<Company> Companies { get; set; } // This gets and sets the list of companies from the table "Companies"
protected void Page_Load(object sender, EventArgs e)
{
PopulateCompanyListGrid();
//if (Companies != null && Companies.Count > 0) // This will put a record in the "txtCompanyName.Text" on page load
//{
// txtCompanyName.Text = Companies.First().Name;
//}
}
protected void btnDelete_Click(object sender, EventArgs e) // This will delete the record that matches the textbox or throw an exception
{
CompanyContext context = null;
switch (btnDelete.Text)
{
case DeleteButton:
try
{
context = new CompanyContext();
var company = context.Companies.ToList().First(x => x.Name == txtCompanyName.Text);
context.DeleteCompany(company);
//PopulateCompanyListGrid();
Reload();
}
catch (Exception ex)
{
lblCompanyNameNotification.Text = ex.Message;
}
finally
{
if (context != null)
{
context.Dispose();
}
}
PopulateCompanyListGrid();
break;
case CancelButton:
Reload();
break;
}
}