2016-04-22 5 views
0

次のコードでは、2つのタイプのノードを作成します。 In Neo4J2つのタイプのすべてのノードをIDで連結する

public async Task CreateData() 
    { 
    AddNodesAsync<Companies>(myCompanies); 
    AddNodesAsync<Employess>(myEmployes); 
    } 

    public Task AddNodesAsync<T>(List<T> nodes) 
    { 
     return client 
      .Cypher 
      .Create("(n:" + typeof(T).Name + " {nodes})") 
      .WithParams(new {nodes}) 
      .ExecuteWithoutResultsAsync(); 
    } 

各Employeには企業IDがあります。 従業員の会社のIDが会社のIDと一致したときに、これらのすべてを関連付ける必要があります。

私がリンクすることができ、次のコードで

employe に会社

await client.Cypher 
      .Match("(company:Company)", "(employee:Employee)") 
      .Where((employee: company) => employee.ComanyId == company.Id)      
      .Create("employee-[:BELONGS_TO]->company") 
      .ExecuteWithoutResultsAsync(); 

が、どのように私はそれがすべてのcorrespondand会社にこのID REFが採用したリンクすべきであることを伝えることができますか?

+1

これはコード化されており、期待どおりに動作します。実行している実際のコードをコピーしてください。あなたが書いた 'Where'節はコンパイルされません。' .Where ((会社の会社、従業員)=>従業員。会社ID ==会社.Id) ' –

+0

あなたは何を期待していますか?私の場合、何も起こらないようです。私はneo4jの関係を見ません。私はコードを単純化していたので、どこにタイプしたのですか。 –

+0

私は期待通りにすべての関係を作成します。したがって、Id 1の会社とCompany Id = 1の従業員5人があれば、5つの関係が作成されます。 –

答えて

1

私はどこかにタイプミスがあると想定しています。これは私が使用するコードで、あなたが言うべきリンクを生成します。

POCOSとしてこれらを使用する:

public class Company { 
    public int Id { get; set; } 
} 

public class Employee { 
    public int Id { get; set;} 
    public int CompanyId { get; set;} 
} 

は、それらを追加:

var companies = new List<Company> { new Company { Id = 1 }, new Company { Id = 2 } }; 
var employees = new List<Employee> 
{ 
    new Employee{ Id=1, CompanyId =1 }, 
    new Employee{ Id=2, CompanyId =1 }, 
    new Employee{ Id=3, CompanyId =1 }, 
    new Employee{ Id=4, CompanyId =2 }, 
    new Employee{ Id=5, CompanyId =2 }, 
}; 

await AddNodesAsync(companies); 
await AddNodesAsync(employees); 

あなたが期待するように、この次のビットがすべて正しく作成された関係で、グラフを生成します。

await client.Cypher 
    .Match("(company:Company)","(employee:Employee)") 
    .Where((Company company, Employee employee) => employee.CompanyId == company.Id) 
    .Create("(employee)-[:BELONGS_TO]->(company)") 
    .ExecuteWithoutResults(); 
関連する問題