Возможно создание экземпляра классов, созданных для VisualStudio при использовании DataBase First?Как отразить классы EntityFramework (первый подход модели)?
Я имею в виду, что я использую шаблоны t4 и команду «Сгенерировать код» с использованием шаблонов T4 для обновления инструментов MVC3 для создания моих классов из db со многими отношениями.
Могу ли я использовать отражение, чтобы «заполнить» свойства экземпляра, например «Студент» этого класса в отдельной сборке (dll)?
Например, с 3-х таблиц: «курсы» «студенты» «studentsCourses»
у меня будет 3 лица, на курсы, один для студентов и один для отношений. Могу ли я получить объект или тип «ученик» и использовать отражение, чтобы «заполнить» все его свойства? И если да, как я могу это достичь?
Я уже знаю, что я могу получить объект по ссылке как «тип объекта» (с использованием дженериков), но я просто не могу понять, как создать и/или заполнить сложные свойства (например, в свойстве studentsCourses)
Любой совет заблаговременно.
Здесь я позволяю скрипт для создания таблицы и базы данных "COURSES_TEST":
USE [master]
GO
/****** Object: Database [COURSES_TEST] Script Date: 04/12/2013 23:47:18 ******/
CREATE DATABASE [COURSES_TEST] ON PRIMARY
(NAME = N'COURSES_TEST', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\COURSES_TEST.mdf' , SIZE = 2048KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB)
LOG ON
(NAME = N'COURSES_TEST_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\COURSES_TEST_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
ALTER DATABASE [COURSES_TEST] SET COMPATIBILITY_LEVEL = 100
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [COURSES_TEST].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [COURSES_TEST] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [COURSES_TEST] SET ANSI_NULLS OFF
GO
ALTER DATABASE [COURSES_TEST] SET ANSI_PADDING OFF
GO
ALTER DATABASE [COURSES_TEST] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [COURSES_TEST] SET ARITHABORT OFF
GO
ALTER DATABASE [COURSES_TEST] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [COURSES_TEST] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [COURSES_TEST] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [COURSES_TEST] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [COURSES_TEST] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [COURSES_TEST] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [COURSES_TEST] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [COURSES_TEST] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [COURSES_TEST] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [COURSES_TEST] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [COURSES_TEST] SET DISABLE_BROKER
GO
ALTER DATABASE [COURSES_TEST] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [COURSES_TEST] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [COURSES_TEST] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [COURSES_TEST] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [COURSES_TEST] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [COURSES_TEST] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [COURSES_TEST] SET HONOR_BROKER_PRIORITY OFF
GO
ALTER DATABASE [COURSES_TEST] SET READ_WRITE
GO
ALTER DATABASE [COURSES_TEST] SET RECOVERY SIMPLE
GO
ALTER DATABASE [COURSES_TEST] SET MULTI_USER
GO
ALTER DATABASE [COURSES_TEST] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [COURSES_TEST] SET DB_CHAINING OFF
GO
USE [COURSES_TEST]
GO
/****** Object: Table [dbo].[students] Script Date: 04/12/2013 23:47:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[students](
[studentID] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NULL,
[lastName] [nvarchar](50) NULL,
CONSTRAINT [PK_students] PRIMARY KEY CLUSTERED
(
[studentID] 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
/****** Object: Table [dbo].[courses] Script Date: 04/12/2013 23:47:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[courses](
[courseID] [int] IDENTITY(1,1) NOT NULL,
[course] [nchar](10) NULL,
[description] [nvarchar](50) NULL,
CONSTRAINT [PK_courses] PRIMARY KEY CLUSTERED
(
[courseID] 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
/****** Object: Table [dbo].[Studentscourses] Script Date: 04/12/2013 23:47:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Studentscourses](
[courseStudentID] [int] IDENTITY(1,1) NOT NULL,
[courseID] [int] NULL,
[studentID] [int] NULL,
CONSTRAINT [PK_Studentscourses] PRIMARY KEY CLUSTERED
(
[courseStudentID] 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
/****** Object: ForeignKey [FK_Studentscourses_courses] Script Date: 04/12/2013 23:47:19 ******/
ALTER TABLE [dbo].[Studentscourses] WITH CHECK ADD CONSTRAINT [FK_Studentscourses_courses] FOREIGN KEY([courseID])
REFERENCES [dbo].[courses] ([courseID])
GO
ALTER TABLE [dbo].[Studentscourses] CHECK CONSTRAINT [FK_Studentscourses_courses]
GO
/****** Object: ForeignKey [FK_Studentscourses_students] Script Date: 04/12/2013 23:47:19 ******/
ALTER TABLE [dbo].[Studentscourses] WITH CHECK ADD CONSTRAINT [FK_Studentscourses_students] FOREIGN KEY([studentID])
REFERENCES [dbo].[students] ([studentID])
GO
ALTER TABLE [dbo].[Studentscourses] CHECK CONSTRAINT [FK_Studentscourses_students]
GO
Почему вы хотите использовать отражение? Это вряд ли когда-либо необходимо в нормальном производственном коде. Возможно, в инфраструктурных компонентах. Какая картина? –
Действительно, я не согласен с использованием отражения, но меня попросили сделать это. Большая картинка, это то, что некоторые уже запущенные веб-сайты отправляют мне объект (он имеет одинаковую базовую структуру), и я должен «заполнить его» определенной информацией, но они не хотят изменять проекты, чтобы сделать ссылку к моей DLL, вместо этого они просто хотят изменить строку, в которой объект построен, для вызова метода в моей DLL для отправки объекта. (Я вообще не понимаю, я не архитектор, но с моим небольшим опытом я не чувствую, что отражение - это не тот путь). – Allende
Вы не можете согласиться на обмен списком пар ключ-значение, например '{property1," value1 "}, {property2," 2 "}, {property3," 2013/4/13 "}, ...' –