2011-04-21 3 views
1

삽입을 수행하는 데 문제가 발생하여 계속 오류 Invalid object name 'dbo.atomic.address'가 표시됩니다. 당신이 원자 데이터베이스 주소에서 볼 수 있듯이 존재 :Entity Framework에서 '잘못된 개체 이름이 잘못되었습니다.'오류가 발생합니다.

enter image description here

이것은 CreateAddress 기능입니다. addressline3addressline4에 null을 전달합니다. 이것이 문제가 될지 궁금해했습니다. .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; 
     }  
    } 

, 이것은 I 스택으로 수신 에러가 다음과 같이 또한

enter image description here

, I는 삽입하고, 데이터는 다음

enter image description here

BusinessStreet2는 비어 있지만 아직 채워져 있어도 오류가 계속 발생 함을 확인할 수 있습니다.

이 작업을하는 방법에 대한 도움이나 제안이 있으면 환영합니다. : D 나는 그것이 복수형 또는 단 하나 문제일지도 모르지만 나는 어디로 가고 있는지 알 수 없다고 읽었습니다. Atomic.edmx에서

편집 XML의 : 데이터베이스 이름이 Atomic입니다

<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

많은 문제가 발생한 후 문제가 발견되었습니다. 이것은 INSERTUPDATE에 대한 테이블에서 트리거로 판명되었습니다. 도! 방아쇠는 분명히 테스트되지 않았고 완전히 잊어 버렸습니다.

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

그 포인터 주셔서 감사. 나는 똑같은 문제가 있었는데 - 테이블 이름을 변경했지만 어떻게 든 트리거를 업데이트하는 것을 잊어 버렸습니다. 나를 믿어 라, 나는 이것을 디버깅하는 데 3 시간 이상을 보냈다. 그리고 내가 포기하고 당신의 대답이 옳았다. 명성. – muruge

0

그것은 당신의 매핑 문제처럼 보이는 때문에 경우 테이블의 정확한 이름은 Atomic.dbo.Address입니다. 또한 EF는 객체 이름에 데이터베이스 이름을 추가 할 필요가 없습니다.

+0

응답 해 주셔서 감사합니다. 나는 그걸 생각 만했는데 그것을 어떻게 바꿀 지 모른다. 나는 어떤 하드 코딩 된 참조를 찾았고 아무 것도 발견하지 못했습니다 ... – dooburt

+0

어떻게 테이블을 매핑 했습니까? –

+0

VS2010에서 Atomic.edmx를 열고 데이터베이스에서 업데이트합니까? – dooburt

관련 문제