Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2013, 15:14   #1
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 825
Сообщение Добавление данных в таблицу

Есть контроллер
Код:
public ActionResult ADDObject(Name add)
        {
            Model1Container context = new Model1Container();
            context.Names.AddObject(new Name {FirstName=add.FirstName,LastName=add.LastName,Adress=add.Adress });
            context.SaveChanges();
            return View("Add");
        }
Он добавляет данные в таблицу.Раз у меня так данные добавляет.Но при добавлении ёще раз выскакивает
Цитата:
Нарушение "PK_Adresss" ограничения PRIMARY KEY. Невозможно вставить повторяющийся ключ в объект "dbo.Adresss".
Выполнение данной инструкции было прервано.
Как мне можно это обойти?
ts-alan вне форума Ответить с цитированием
Старый 27.11.2013, 15:30   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

легко, надо не вставлять повторяющийся ключ.
eval вне форума Ответить с цитированием
Старый 27.11.2013, 15:40   #3
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 825
Сообщение

А как это сделать?У меня данные в контроллер всё время приходят с одни и тем же ключем?В таблице данных настройки делать? Или всё время рандомом заполнять ключ?
ts-alan вне форума Ответить с цитированием
Старый 27.11.2013, 15:44   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

отсюда не видно что у вас там и как...
eval вне форума Ответить с цитированием
Старый 27.11.2013, 16:07   #5
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 825
Сообщение

Скрин вью
Код:
@model AddresBook.Name

@{
    ViewBag.Title = "ADD";
}

<h2>ADD</h2>

@using (Html.BeginForm("addobject","Home")) {
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Name</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.FirstName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.FirstName)
            @Html.ValidationMessageFor(model => model.FirstName)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.LastName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.LastName)
            @Html.ValidationMessageFor(model => model.LastName)
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.Adress.adress)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Adress.adress)
            @Html.ValidationMessageFor(model => model.Adress.adress)
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

Последний раз редактировалось ts-alan; 27.11.2013 в 16:16.
ts-alan вне форума Ответить с цитированием
Старый 27.11.2013, 16:20   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

у вас база не принимает а вы сюда вьюшку пихаете, ну что с ней делать?
eval вне форума Ответить с цитированием
Старый 27.11.2013, 16:43   #7
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 825
Сообщение

скрип создания базы данных
Код:
-- --------------------------------------------------
-- Entity Designer DDL Script for SQL Server 2005, 2008, and Azure
-- --------------------------------------------------
-- Date Created: 11/27/2013 15:42:37
-- Generated from EDMX file: E:\downland\Сохранение проектов\AddresBook\AddresBook\Model1.edmx
-- --------------------------------------------------

SET QUOTED_IDENTIFIER OFF;
GO
USE [AdressBook];
GO
IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
GO

-- --------------------------------------------------
-- Dropping existing FOREIGN KEY constraints
-- --------------------------------------------------

IF OBJECT_ID(N'[dbo].[FK_NameAdress]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Names] DROP CONSTRAINT [FK_NameAdress];
GO

-- --------------------------------------------------
-- Dropping existing tables
-- --------------------------------------------------

IF OBJECT_ID(N'[dbo].[Names]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Names];
GO
IF OBJECT_ID(N'[dbo].[Adresss]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Adresss];
GO

-- --------------------------------------------------
-- Creating all tables
-- --------------------------------------------------

-- Creating table 'Names'
CREATE TABLE [dbo].[Names] (
    [id] int IDENTITY(1,1) NOT NULL,
    [FirstName] nvarchar(max)  NOT NULL,
    [LastName] nvarchar(max)  NOT NULL,
    [Adress_Name_id] int  NOT NULL
);
GO

-- Creating table 'Adresss'
CREATE TABLE [dbo].[Adresss] (
    [adress] nvarchar(max)  NOT NULL,
    [Name_id] int  NOT NULL
);
GO

-- --------------------------------------------------
-- Creating all PRIMARY KEY constraints
-- --------------------------------------------------

-- Creating primary key on [id] in table 'Names'
ALTER TABLE [dbo].[Names]
ADD CONSTRAINT [PK_Names]
    PRIMARY KEY CLUSTERED ([id] ASC);
GO

-- Creating primary key on [Name_id] in table 'Adresss'
ALTER TABLE [dbo].[Adresss]
ADD CONSTRAINT [PK_Adresss]
    PRIMARY KEY CLUSTERED ([Name_id] ASC);
GO

-- --------------------------------------------------
-- Creating all FOREIGN KEY constraints
-- --------------------------------------------------

-- Creating foreign key on [Adress_Name_id] in table 'Names'
ALTER TABLE [dbo].[Names]
ADD CONSTRAINT [FK_NameAdress]
    FOREIGN KEY ([Adress_Name_id])
    REFERENCES [dbo].[Adresss]
        ([Name_id])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_NameAdress'
CREATE INDEX [IX_FK_NameAdress]
ON [dbo].[Names]
    ([Adress_Name_id]);
GO

-- --------------------------------------------------
-- Script has ended
-- --------------------------------------------------
Или что ещё кинуть?

Последний раз редактировалось ts-alan; 27.11.2013 в 16:47.
ts-alan вне форума Ответить с цитированием
Старый 03.12.2013, 10:10   #8
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Код:
PRIMARY KEY CLUSTERED ([Name_id] ASC);
и
Код:
FOREIGN KEY ([Adress_Name_id])
    REFERENCES [dbo].[Adresss]
        ([Name_id])
Разве неочевидно, что это одно и то же поле, а Вы туда разные ключи ставите ?
Вам проще будет добавить обычный ("суррогатный") первичный ключ в таблицу адресов, аналогично как для имён:
Код:
[id] int IDENTITY(1,1) NOT NULL
и тогда всё будет норм.

Уж не знаю, Вы так схему таблиц составили, или Entity Designer накосячил чего, но глазками тоже не мешает просматривать.


ПС. Сорри, темы в разделе начал просматривать "снизу" , далее уже есть развитие темы и мой совет по сути без надобности. Можно, в принципе, удалить.

Последний раз редактировалось phomm; 03.12.2013 в 10:12.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление данных в связанную таблицу. Fahnrich БД в Delphi 6 11.07.2013 21:29
Добавление данных в таблицу novicepro БД в Delphi 0 02.06.2013 02:24
Добавление данных в таблицу MaxOz БД в Delphi 0 28.02.2012 18:08
Добавление данных в таблицу slai SQL, базы данных 1 13.12.2010 16:33
Добавление данных в таблицу. Hobbit_88 БД в Delphi 11 06.06.2009 13:52