linq to entities 检索数据库 table 行值并显示为 label.Text C# .net
linq to entities retrieve database table row value and display as label.Text C# .net
使用 LINQ to Entities。不是 SQL连接或任何其他方法。
我有一个网页,我需要在同一个数据库中显示一个数据表中的 'ID' 和另一个数据表中相应的 'Name'。 ID 和 Name 应显示为 lblOrderId.Text = OrderId.ToString();和 lblName.Text = Name.ToString();分别。
不必是字符串,我只需要标签中数据库中的值。
就目前情况而言,我没有收到任何标签文本,但如果我使用底部的代码,我得到的只是订单和交货日期。
包含 OrderId 的数据表有两列; OrderId 自动生成并位于第 0 列,ProductId。
包含名称的数据表有 6 列,名称在第 1 列中,因为第 0 列包含自动生成的客户 ID
我只需要最后添加的名称和 ID 即可显示为标签。
过去 5 小时我一直在这个网站和其他网站上对此进行研究,但似乎找不到适合我需要的解决方案。都是 SQL 连接和少量的数据库值到文本框。
请参阅下面的代码以及我所取得的成果,如果您需要任何进一步的编码或信息,请随时询问。
提前感谢您提供的任何建议或帮助。
ASPX.CS(后端)
protected void Page_Load(object sender, EventArgs e)
{
using (Entities myEntities = new Entities())
{
int OrderId = // Not sure what to put here, but if I don't have it I get the error *The name OrderId does not exist in the current context*
var orderId = (from ord in myEntities.Orders
where ord.OrderId.Equals(OrderId) // Error here
select ord).Last();
lblOrderID.ForeColor = Color.Red;
lblOrderID.Text = orderId.ToString();
使用以下有关名称的方法面临完全相同的错误。这两种方法都包含在相同的 Using Entities {} 花括号中。
var name = (from ord in myEntities.Customer
where ord.Name.Equals(Name)
select ord).Last();
lblName.ForeColor = Color.Red;
lblName.Text = name.ToString();
关闭 Using Entities {} 大括号,但仍在 Page_Load {} 大括号内我有以下代码来添加订单日期和交货日期,如下所示
DateTime date = DateTime.Now;
DateTime DeliveryDate = date.AddDays(5);
lblDate.ForeColor = Color.Red;
lblDeliveryDate.ForeColor = Color.Red;
lblDate.Text = date.ToLongDateString();
lblDeliveryDate.Text = DeliveryDate.ToLongDateString();
整块 Page_Load
protected void Page_Load(object sender, EventArgs e)
{
using (Entities myEntities = new Entities())
{
//int OrderId = Convert.ToInt32(); // Not sure what to put here, but if I don't have it I get the error *The name OrderId does not exist in the current context*
var orderId = (from ord in myEntities.Orders
where ord.OrderId.Equals(OrderId)// Error here
select ord).Last();
lblOrderID.ForeColor = Color.Red;
lblOrderID.Text = orderId.ToString();
var name = (from ord in myEntities.Customer
where ord.Name.Equals(Name)
select ord).Last();
lblName.ForeColor = Color.Red;
lblName.Text = name.ToString();
}
DateTime date = DateTime.Now;
DateTime DeliveryDate = date.AddDays(5);
lblDate.ForeColor = Color.Red;
lblDeliveryDate.ForeColor = Color.Red;
lblDate.Text = date.ToLongDateString();
lblDeliveryDate.Text = DeliveryDate.ToLongDateString();
}
ASPX(前端)
<p>
Hi
<asp:Label ID="lblName" runat="server" Text=""></asp:Label>
Thank you for shopping at Cineplex.<br />
<br />
Your Order ID number is:
<asp:Label ID="lblOrderID" runat="server" Text=""></asp:Label><br />
<br />
Your order was placed on:
<asp:Label ID="lblDate" runat="server" Text=""></asp:Label><br />
<br />
Delivery date:
<asp:Label ID="lblDeliveryDate" runat="server" Text=""></asp:Label>
</p>
硬编码名称和订单 ID 并删除实体和查询,如在后端使用下面的代码所示,这是一种享受,但这是不可接受的。客户需要在成功购买后查看他们的订单 ID。
唯一令人欣慰的是,我在所有四个标签中都得到了客户可以阅读的值。
protected void Page_Load(object sender, EventArgs e)
{
lblName.ForeColor = Color.Red;
lblName.Text = "User";
lblOrderID.ForeColor = Color.Red;
lblOrderID.Text = "1";
DateTime date = DateTime.Now;
DateTime DeliveryDate = date.AddDays(5);
lblDate.ForeColor = Color.Red;
lblDeliveryDate.ForeColor = Color.Red;
lblDate.Text = date.ToLongDateString();
lblDeliveryDate.Text = DeliveryDate.ToLongDateString();
}
你的问题是关于从数据库中查询一些东西。您可以从查询中删除所有 ASP 内容,因为它只会分散您的注意力。
相反,您应该向我们展示实体 类(订单、客户)。据我了解,您想要特定订单的 Order.OrderId
和 Customer.Name
(订购它的客户的),您不知道它是如何识别的。
假设您使用通常的 Customer/Order 示例模型,您的实体必须看起来像这样:
public class Customer
{
public int CustomerId; // identifies a customer
public string Name; // the customer's name
public ICollection<Order> Orders; // collection of customer's orders
}
public class Order
{
public int OrderId; // identifies an order
public int CustomerId { get; } // ID of the customer who's order it is.
public Customer Customer { get; } // The Customer entity of that customer
}
里面Page_Load(不相关的省略)
// 1st find out the ID of the one and only order the page is about
int orderId = 4711; // can't help here - where do you intend to get it from?
// 2nd retrieve from DB whatever we need later
string customerName;
using (var myEntities = new Entities())
{
var orderInfo = (
from order in myEntities.Orders
where order.OrderId == orderId
select new { CustomerName = order.Customer.Name }
).SingleOrDefault();
if (orderInfo == null) // error handling if orderId is bad
throw new Exception("No such order found.");
customerName = orderInfo.CustomerName;
}
// 3rd use what we know to update controls
lblName.Text = customerName;
结果。
我将初始变量保存在 aspx.cs 页面上的两个不同会话中,它们是这样创建的:
int custID = Cust.CustomerId;
Session["CustID"] = Cust.CustomerId;
int newOrderID = ord.OrderId;
Session["newOrderID"] = ord.OrderId;
然后在 aspx.cs 页面上我想查询数据库 table 我做了以下操作:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["CustID"] != null)
{
int CID = (int)Session["CustID"];
using (var myEntities = new Entities())
{
var CustName = (from customer in myEntities.Customer
where customer.CustomerId == (CID)
select customer.Name).SingleOrDefault();
if (CustName == null) // error handling if customer name does not exist
throw new Exception("No such Customer found.");
lblName.ForeColor = Color.Red;
lblName.Text = CustName;
}
}
if (Session["newOrderID"] != null)
{
int OID = (int)Session["CustID"];
using (var myEntities = new Entities())
{
var OrderNum = (from order in myEntities.Orders
where order.OrderId == (OID)
select order.OrderId).SingleOrDefault();
if (OrderNum == 0) // error handling if customer name does not exist
throw new Exception("No such Order found.");
lblOrderID.ForeColor = Color.Red;
lblOrderID.Text = OrderNum.ToString();
}
}
DateTime date = DateTime.Now;
DateTime DeliveryDate = date.AddDays(5);
lblDate.ForeColor = Color.Red;
lblDeliveryDate.ForeColor = Color.Red;
lblDate.Text = date.ToLongDateString();
lblDeliveryDate.Text = DeliveryDate.ToLongDateString();
}
感谢各位提意见和建议。非常感激。
使用 LINQ to Entities。不是 SQL连接或任何其他方法。
我有一个网页,我需要在同一个数据库中显示一个数据表中的 'ID' 和另一个数据表中相应的 'Name'。 ID 和 Name 应显示为 lblOrderId.Text = OrderId.ToString();和 lblName.Text = Name.ToString();分别。
不必是字符串,我只需要标签中数据库中的值。
就目前情况而言,我没有收到任何标签文本,但如果我使用底部的代码,我得到的只是订单和交货日期。
包含 OrderId 的数据表有两列; OrderId 自动生成并位于第 0 列,ProductId。
包含名称的数据表有 6 列,名称在第 1 列中,因为第 0 列包含自动生成的客户 ID
我只需要最后添加的名称和 ID 即可显示为标签。
过去 5 小时我一直在这个网站和其他网站上对此进行研究,但似乎找不到适合我需要的解决方案。都是 SQL 连接和少量的数据库值到文本框。
请参阅下面的代码以及我所取得的成果,如果您需要任何进一步的编码或信息,请随时询问。
提前感谢您提供的任何建议或帮助。
ASPX.CS(后端)
protected void Page_Load(object sender, EventArgs e)
{
using (Entities myEntities = new Entities())
{
int OrderId = // Not sure what to put here, but if I don't have it I get the error *The name OrderId does not exist in the current context*
var orderId = (from ord in myEntities.Orders
where ord.OrderId.Equals(OrderId) // Error here
select ord).Last();
lblOrderID.ForeColor = Color.Red;
lblOrderID.Text = orderId.ToString();
使用以下有关名称的方法面临完全相同的错误。这两种方法都包含在相同的 Using Entities {} 花括号中。
var name = (from ord in myEntities.Customer
where ord.Name.Equals(Name)
select ord).Last();
lblName.ForeColor = Color.Red;
lblName.Text = name.ToString();
关闭 Using Entities {} 大括号,但仍在 Page_Load {} 大括号内我有以下代码来添加订单日期和交货日期,如下所示
DateTime date = DateTime.Now;
DateTime DeliveryDate = date.AddDays(5);
lblDate.ForeColor = Color.Red;
lblDeliveryDate.ForeColor = Color.Red;
lblDate.Text = date.ToLongDateString();
lblDeliveryDate.Text = DeliveryDate.ToLongDateString();
整块 Page_Load
protected void Page_Load(object sender, EventArgs e)
{
using (Entities myEntities = new Entities())
{
//int OrderId = Convert.ToInt32(); // Not sure what to put here, but if I don't have it I get the error *The name OrderId does not exist in the current context*
var orderId = (from ord in myEntities.Orders
where ord.OrderId.Equals(OrderId)// Error here
select ord).Last();
lblOrderID.ForeColor = Color.Red;
lblOrderID.Text = orderId.ToString();
var name = (from ord in myEntities.Customer
where ord.Name.Equals(Name)
select ord).Last();
lblName.ForeColor = Color.Red;
lblName.Text = name.ToString();
}
DateTime date = DateTime.Now;
DateTime DeliveryDate = date.AddDays(5);
lblDate.ForeColor = Color.Red;
lblDeliveryDate.ForeColor = Color.Red;
lblDate.Text = date.ToLongDateString();
lblDeliveryDate.Text = DeliveryDate.ToLongDateString();
}
ASPX(前端)
<p>
Hi
<asp:Label ID="lblName" runat="server" Text=""></asp:Label>
Thank you for shopping at Cineplex.<br />
<br />
Your Order ID number is:
<asp:Label ID="lblOrderID" runat="server" Text=""></asp:Label><br />
<br />
Your order was placed on:
<asp:Label ID="lblDate" runat="server" Text=""></asp:Label><br />
<br />
Delivery date:
<asp:Label ID="lblDeliveryDate" runat="server" Text=""></asp:Label>
</p>
硬编码名称和订单 ID 并删除实体和查询,如在后端使用下面的代码所示,这是一种享受,但这是不可接受的。客户需要在成功购买后查看他们的订单 ID。
唯一令人欣慰的是,我在所有四个标签中都得到了客户可以阅读的值。
protected void Page_Load(object sender, EventArgs e)
{
lblName.ForeColor = Color.Red;
lblName.Text = "User";
lblOrderID.ForeColor = Color.Red;
lblOrderID.Text = "1";
DateTime date = DateTime.Now;
DateTime DeliveryDate = date.AddDays(5);
lblDate.ForeColor = Color.Red;
lblDeliveryDate.ForeColor = Color.Red;
lblDate.Text = date.ToLongDateString();
lblDeliveryDate.Text = DeliveryDate.ToLongDateString();
}
你的问题是关于从数据库中查询一些东西。您可以从查询中删除所有 ASP 内容,因为它只会分散您的注意力。
相反,您应该向我们展示实体 类(订单、客户)。据我了解,您想要特定订单的 Order.OrderId
和 Customer.Name
(订购它的客户的),您不知道它是如何识别的。
假设您使用通常的 Customer/Order 示例模型,您的实体必须看起来像这样:
public class Customer
{
public int CustomerId; // identifies a customer
public string Name; // the customer's name
public ICollection<Order> Orders; // collection of customer's orders
}
public class Order
{
public int OrderId; // identifies an order
public int CustomerId { get; } // ID of the customer who's order it is.
public Customer Customer { get; } // The Customer entity of that customer
}
里面Page_Load(不相关的省略)
// 1st find out the ID of the one and only order the page is about
int orderId = 4711; // can't help here - where do you intend to get it from?
// 2nd retrieve from DB whatever we need later
string customerName;
using (var myEntities = new Entities())
{
var orderInfo = (
from order in myEntities.Orders
where order.OrderId == orderId
select new { CustomerName = order.Customer.Name }
).SingleOrDefault();
if (orderInfo == null) // error handling if orderId is bad
throw new Exception("No such order found.");
customerName = orderInfo.CustomerName;
}
// 3rd use what we know to update controls
lblName.Text = customerName;
结果。 我将初始变量保存在 aspx.cs 页面上的两个不同会话中,它们是这样创建的:
int custID = Cust.CustomerId;
Session["CustID"] = Cust.CustomerId;
int newOrderID = ord.OrderId;
Session["newOrderID"] = ord.OrderId;
然后在 aspx.cs 页面上我想查询数据库 table 我做了以下操作:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["CustID"] != null)
{
int CID = (int)Session["CustID"];
using (var myEntities = new Entities())
{
var CustName = (from customer in myEntities.Customer
where customer.CustomerId == (CID)
select customer.Name).SingleOrDefault();
if (CustName == null) // error handling if customer name does not exist
throw new Exception("No such Customer found.");
lblName.ForeColor = Color.Red;
lblName.Text = CustName;
}
}
if (Session["newOrderID"] != null)
{
int OID = (int)Session["CustID"];
using (var myEntities = new Entities())
{
var OrderNum = (from order in myEntities.Orders
where order.OrderId == (OID)
select order.OrderId).SingleOrDefault();
if (OrderNum == 0) // error handling if customer name does not exist
throw new Exception("No such Order found.");
lblOrderID.ForeColor = Color.Red;
lblOrderID.Text = OrderNum.ToString();
}
}
DateTime date = DateTime.Now;
DateTime DeliveryDate = date.AddDays(5);
lblDate.ForeColor = Color.Red;
lblDeliveryDate.ForeColor = Color.Red;
lblDate.Text = date.ToLongDateString();
lblDeliveryDate.Text = DeliveryDate.ToLongDateString();
}
感谢各位提意见和建议。非常感激。