首先添加表格和数据:
--I use db Breaz, you use whatever you require
USE [Breaz]
GO
/****** Object: Table [dbo].[table1] Script Date: 5/4/2017 12:20:45 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[table1](
[Id] [int] IDENTITY(1,1) NOT NULL,
[field1] [varchar](10) NULL,
[field2] [varchar](10) NULL,
[field3] [varchar](10) NULL,
[field4] [varchar](10) NULL,
CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[table2] Script Date: 5/4/2017 12:20:45 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[table2](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Field4Default] [varchar](10) NULL,
CONSTRAINT [PK_table2] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
SET IDENTITY_INSERT [dbo].[table1] ON
GO
INSERT [dbo].[table1] ([Id], [field1], [field2], [field3], [field4]) VALUES (1, N'f1', N'f2', N'f3', N'f4')
GO
INSERT [dbo].[table1] ([Id], [field1], [field2], [field3], [field4]) VALUES (2, N'seconda', N'secondb', N'secondc', NULL)
GO
SET IDENTITY_INSERT [dbo].[table1] OFF
GO
SET IDENTITY_INSERT [dbo].[table2] ON
GO
INSERT [dbo].[table2] ([Id], [Field4Default]) VALUES (3, N'DefaultV')
GO
SET IDENTITY_INSERT [dbo].[table2] OFF
GO
添加 EDMX:右键单击 Models 文件夹并添加 ADO.NET 实体数据模型。将其命名为 table1 并单击 Ok,Generate from database 突出显示,因此单击 Next。单击新建连接。输入服务器名称。使用 windows 身份验证或使用 sql server 身份验证(凭据),如果是后者,请单击保存我的密码。从下拉列表中选择数据库。单击确定。如果您进行了 Windows 身份验证,请等待单击“是,包括敏感信息..”。将“保存实体连接...”下方的连接复制到剪贴板。点击下一步。在表下,选择表 1 和表 2。点击完成。然后点击 ok 出现接下来的两个提示(等待它们),然后关闭 gui 设计器。
这是你的控制器。
public class HomeController : Controller
{
public ActionResult Index63()
{
var table1List = new List<table1>();
//instead of BreazEntities18, use the name you copied to the clipboard
//or lick on table1.context.cs to get the name
using (BreazEntities18 entity = new BreazEntities18())
{
var q = entity.table1.Select(r => new
{
field1 = r.field1,
field2 = r.field2,
field3 = r.field3,
field4 = r.field4 == null ? (entity.table2.Select(s => s.Field4Default).FirstOrDefault())
: r.field4
}
).ToList();
}
return View();
}