thảo luận [.NET] Topic thảo luận các vấn đề xoay quanh .Net

học qua video thì mình thường xem hết cả video nếu nó chia thành từng video hoặc nếu video dài thì xem 1 hết 1 đoạn nào đó rồi bắt tay vào làm theo, quên thì lại xem lại, thế nó đỡ chán hơn với cũng dễ vào hơn
 
Các chuyên gia .NET cho hỏi có ai biết sharepoint không cho mình xin ít thông tin, hoặc chỗ dạy món này :love:
.net và sharepoint là 2 thứ khác nhau nhé. Mặc dù cùng là nhà microsoft

Sharepoint ở cty t ngày càng chậm trong truy vấn do csdl nó sử dụng nosql.
Giờ có xu hướng chuyển sang xài sql đây. Môn sharepoint lỡ thời rồi.
 
.net và sharepoint là 2 thứ khác nhau nhé. Mặc dù cùng là nhà microsoft

Sharepoint ở cty t ngày càng chậm trong truy vấn do csdl nó sử dụng nosql.
Giờ có xu hướng chuyển sang xài sql đây. Môn sharepoint lỡ thời rồi.
Thấy sourcode cũng C# mà ae bảo phải nắm .net rồi mới nắm được sharepoint tưởng nó là framework chứ. Tại web cơ quan phải dùng công nghệ này bạn có tài liệu tiếng việt hoặc tiếng anh không cho xin thêm tham khảo với.
 
Bác vẫn dùng join à.

Tham khảo Include nhé. hiện công ty em đang dùng như thế này

_respository.Entity
.Include(i=>i.Child1)
.ThenInclude(ii=>ii.childOfChild1)
.Include(i=>i.child2)


Yêu cầu khi khai báo class hoặc context thì các class phải liên kết khóa ngoại đầy đủ
Đâu phải lúc nào cũng dùng include đc đâu bác, thừa thãi dữ liệu hoặc không linh hoạt. performance có thể bị giảm đi
 
Bác vẫn dùng join à.

Tham khảo Include nhé. hiện công ty em đang dùng như thế này

_respository.Entity
.Include(i=>i.Child1)
.ThenInclude(ii=>ii.childOfChild1)
.Include(i=>i.child2)


Yêu cầu khi khai báo class hoặc context thì các class phải liên kết khóa ngoại đầy đủ
Hình như muốn dùng include phải có FK đúng ko bạn
 
Có tài liệu nào để đọc làm theo không mấy thím ? Công ty đang cho train fullstack .Net Core + Angular, mà ngồi nghe video buồn ngủ quá :tire:
Bạn thử làm 1 dự án cho bản thân. ví dụ lấy thông tin tỉ giá ngoại tệ, thời tiết, ....
 
Đâu phải lúc nào cũng dùng include đc đâu bác, thừa thãi dữ liệu hoặc không linh hoạt. performance có thể bị giảm đi
Bác map lại dữ liệu ở Dto (view model) ấy. Chỉ trả cái cần thiết thôi.

Nhưng theo bác thế nào mới linh hoạt
 
Bác map lại dữ liệu ở Dto (view model) ấy. Chỉ trả cái cần thiết thôi.

Nhưng theo bác thế nào mới linh hoạt
Mình nghĩ ý bác ấy là viết query để select về đúng những field cần thiết thôi, còn dùng include thì nó lấy về cả record luôn cho dù bạn có map qua dto thì bạn cũng đã get hết data về rồi.
Mình còn ít kinh nghiệm trong việc này, trước giờ cũng hay xài include, đang tập viết query join EF. Ở cty thì dự án xài mongodb nên cũng chả có join bao giờ.
 
Đâu phải lúc nào cũng dùng include đc đâu bác, thừa thãi dữ liệu hoặc không linh hoạt. performance có thể bị giảm đi
EF ko ai rảnh mà lấy từng field hết.
99% join phải qua lệnh include bởi vì liên kết qua FK (relational database).
1% còn lại bất đắt dĩ vì ko có FK nên mới dùng join.
 
Mình nghĩ ý bác ấy là viết query để select về đúng những field cần thiết thôi, còn dùng include thì nó lấy về cả record luôn cho dù bạn có map qua dto thì bạn cũng đã get hết data về rồi.
Mình còn ít kinh nghiệm trong việc này, trước giờ cũng hay xài include, đang tập viết query join EF. Ở cty thì dự án xài mongodb nên cũng chả có join bao giờ.
Mình thì toàn viết ra stored procedure xong call,hoặc với những query đơn giản thì dùng ef join chứ cũng chưa dùng include bao giờ
 
Mình thì toàn viết ra stored procedure xong call,hoặc với những query đơn giản thì dùng ef join chứ cũng chưa dùng include bao giờ
Một số ứng dụng người ta viết cho nhiều loại Database khác nhau và không muốn lộ Bussiness Logic thì bắt buộc phải viết ở tầng Backend (API) đó bạn.

Mình cũng thích dùng ở Store vì có cảm giác nhanh, dễ điều chỉnh; Nhưng sau này khi triển khai trên nhiều môi trường khác nhau thì cập nhật lại Store trên mỗi CSDL thốn lắm ^^
 
EF ko ai rảnh mà lấy từng field hết.
99% join phải qua lệnh include bởi vì liên kết qua FK (relational database).
1% còn lại bất đắt dĩ vì ko có FK nên mới dùng join.
Bác không rảnh nhưng người khác rảnh, giả sử cái table của bác nhiều cột và data, mà bác cứ lấy hết ra thì có phải là thừa không?
 
Bác không rảnh nhưng người khác rảnh, giả sử cái table của bác nhiều cột và data, mà bác cứ lấy hết ra thì có phải là thừa không?
Chuẩn bác, lấy hết data ra vừa thừa vừa chậm, mình chỉ lấy các trường cụ thể, cần thiết thôi chứ
 
Bác map lại dữ liệu ở Dto (view model) ấy. Chỉ trả cái cần thiết thôi.

Nhưng theo bác thế nào mới linh hoạt
Đấy là bác load xong những thằng đc include rồi, sau đó mới map sang view model thì vẫn bị chậm thay vì đó bác chỉ lấy những trường mình cần và map vào view model
 
Chuẩn bác, lấy hết data ra vừa thừa vừa chậm, mình chỉ lấy các trường cụ thể, cần thiết thôi chứ
Ở trường hợp này không liên quan đến Include.

Trước hết nói về định nghĩa "dữ liệu cụ thể, cần thiết" của bác. Thì
  1. Chỉ lấy Property ở cần ở thực thể chính. Lúc này không cần Inlude. Theo ý tưởng của bác thì tôi sẽ map dữ liệu sau câu lệnh Queryable(), hoặc tôi cũng có thể Select(<map theo DTO model>). Như vậy câu query có thể tracking trên CSDL nó sẽ không lấy tất cả các Column.
  2. Chỉ lấy thực thể phụ cần thiết: lúc này tôi sử dụng Include thì sẽ nhanh hơn việc Join dữ liệu. Track SQL thì cũng sẽ thấy lệnh SQL cũng là JOIN. Vậy nên về phương thức là giống nhau. Nhưng cách viết thì Include chắc chắn gọn hơn nhiều. Và cũng để phòng ngừa rủi ro các câu lệnh ngu ngốc kiểu:
    C#:
    var result=MultiMerger.TargetIds    .Select(id =>
        {
            FileDatabaseMerger merger = MultiMerger.GetMerger(id);
    
            return new
            {
                Id = id,
                IsStale = merger.TargetIsStale,
                // ...
            };
        })
        .ToList();
  3. Kết hợp cả 2 cách trên: sử dụng IQueryable, include trước, sau đó có thể map(lúc này lệnh SQL đã select được các trường cần lấy trong IQueryable)

Một vấn đề khác mà bác nên để ý là ở các công ty thông thường (không phải thương mại điện tử kiểu Shopee) thì các server bây giờ cũng rất mạnh và phần Backend (API) thường đặt đặt chung một data Center có chứa Database, cho nên việc tối ưu hóa performance bằng một vài dòng code hiện tại cũng chỉ là trò hoa hòe của giới kỹ thuật. Entity Framework và SQL ngày càng phát triển triển và nó sẽ có những thuật toán tối ưu hơn.

Vì vậy tốt nhất là làm sao code cho sạch đẹp dễ để người sau maintance là ưu tiên và tốt nhất cho Production.
 
Một vấn đề khác mà bác nên để ý là ở các công ty thông thường (không phải thương mại điện tử kiểu Shopee) thì các server bây giờ cũng rất mạnh và phần Backend (API) thường đặt đặt chung một data Center có chứa Database, cho nên việc tối ưu hóa performance bằng một vài dòng code hiện tại cũng chỉ là trò hoa hòe của giới kỹ thuật. Entity Framework và SQL ngày càng phát triển triển và nó sẽ có những thuật toán tối ưu hơn.

Vì vậy tốt nhất là làm sao code cho sạch đẹp dễ để người sau maintance là ưu tiên và tốt nhất cho Production.
thôi anh ơi, anh phán kinh vl.
 
thôi anh ơi, anh phán kinh vl.
Chứ gì nữa, lúc đầu code cũng thích tối ưu từng dòng code.
Nhưng tốc độ thực thi program bị ảnh hưởng bởi khá nhiều yếu tố như sử dụng các lib, thiết kế DB, Cloud...
Bản thân dùng EF đã chậm hơn dùng ADO.NET mà tại sao người ta vẫn dùng EF.
Trừ những hệ thống đặc thù chứ bình thường khách hàng ít ai quan tâm nhanh hay chậm hơn chút ít. Người ta chỉ quan tâm hệ thông work theo recomend thôi.
Việc tối ưu code nên để khi sản phẩm hoàn thành hoặc chạy chậm.
Với lại lúc code tôi lại thấy đánh đổi chút ít perf mà làm code rối rắm hơn thì không đáng.
 
Last edited:
Back
Top