Entity Framework выдает странную ошибку «Неверное имя объекта» - PullRequest
1 голос
/ 21 апреля 2011

У меня проблемы с выполнением вставки и я постоянно получаю сообщение об ошибке Invalid object name 'dbo.atomic.address'. Как вы можете видеть внутри атомарной базы данных, адрес существует:

enter image description here

Это функция CreateAddress. Я передаю нули в addressline3 и addressline4. Я задавался вопросом, может ли это быть проблемой. Я проверил шаблоны .tt, и у объекта Address они не помечены как Nullable - проблема?

public static int CreateAddress(string addressline1, string addressline2, string addressline3,
        string addressline4, string postcode, int cityid, int countryid, int clientid,
        string tag, bool active, string notes = null)
    {
        using (var ctx = new atomicEntities())
        {
            var a = new Address
                        {
                            ClientId = clientid,
                            AddressTag = tag,
                            AddressLine1 = addressline1,
                            AddressLine2 = addressline2,
                            AddressLine3 = addressline3,
                            AddressLine4 = addressline4,
                            CityId = cityid,
                            Postcode = postcode,
                            CountryId = countryid,
                            AddressNotes = notes,
                            Active = active,
                            Token = DateTime.UtcNow
                        };
            ctx.Connection.Open();
            ctx.Addresses.AddObject(a);
            ctx.SaveChanges();
            return a.AddressId;
        }    
    }

Просто для справки, это ошибка, которую я получаю со стеком:

enter image description here

Кроме того, я добавляю следующие данные:

enter image description here

BusinessStreet2 пусто, но я могу подтвердить, что даже при заполнении ошибка по-прежнему возникает.

Любая помощь или предложения приветствуются о том, как сделать эту работу! : D Я читал, что это может быть проблема множественного или единственного числа, но я не вижу, где я иду не так?

РЕДАКТИРОВАТЬ XML из Atomic.edmx:

    <EntityContainer Name="atomicModelStoreContainer">
          <EntitySet Name="address" EntityType="atomicModel.Store.address" store:Type="Tables" Schema="dbo" />
 </EntityContainer>
        <EntityType Name="address">
          <Key>
            <PropertyRef Name="address_id" />
          </Key>
          <Property Name="address_id" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />
          <Property Name="client_id" Type="int" Nullable="false" />
          <Property Name="address_tag" Type="nvarchar" MaxLength="50" />
          <Property Name="address_line_1" Type="nvarchar" MaxLength="255" />
          <Property Name="address_line_2" Type="nvarchar" MaxLength="255" />
          <Property Name="address_line_3" Type="nvarchar" MaxLength="255" />
          <Property Name="address_line_4" Type="nvarchar" MaxLength="255" />
          <Property Name="city" Type="int" />
          <Property Name="postcode" Type="nvarchar" MaxLength="12" />
          <Property Name="country" Type="int" />
          <Property Name="address_notes" Type="nvarchar" MaxLength="500" />
          <Property Name="active" Type="bit" Nullable="false" />
          <Property Name="token" Type="datetime" />
        </EntityType>

Ответы [ 2 ]

2 голосов
/ 21 апреля 2011

После долгих раздумий я обнаружил проблему.Это оказалось триггером на столе для INSERT и UPDATE.Doh!Триггер был явно не проверен и полностью забыт:

CREATE TRIGGER AddressTrigger 
ON [address]
FOR INSERT, UPDATE
AS
DECLARE @Address As Int;
SELECT @Address = i.[address_id] FROM inserted i;
UPDATE [dbo].[atomic].[address]
set
    [token] = GETDATE()
where [address_id] = @Address;
GO

Я смутно помню, как настраивал их сам, но с тех пор забыл.Пожалуйста, примите мои извинения за трату времени всех!Я никогда не верну следующие 3 часа моей жизни!

0 голосов
/ 21 апреля 2011

Это похоже на проблему в вашем отображении, потому что, если ваша база данных имеет имя Atomic, правильное имя таблицы будет Atomic.dbo.Address.Также EF не должен добавлять имя базы данных в имя объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...